uva 10626 - Buying Coke(记忆化搜索)
题目大意:给出要买可乐的数量, 以及1元,5元和10元硬币的数量, 每瓶可乐8元,每次照钱会按照最少硬币的方式找回, 问如何投币可使得投入的硬币数最少, 输出最少硬币值。
解题思路:记忆化搜索, 因为可乐每购买一次便要找会硬币,所以对与每个状态考虑的情况比并不是很多。
注意:1、每够买一次可乐便会找回一次硬币,所以不用考虑的太复杂。
2、题目中虽然说1元不超过500个,但是开的记录数组一定要比500大,大约700左右,因为要考虑找回金额的情况。
- #include <stdio.h>
- #include <string.h>
- #define min(a,b) (a) < (b) ? (a) : (b)
- const int MAX = 1 << 30;
- int vis[705][205][105], dp[705][205][105];
- int solve(int c, int n1, int n5, int n10) {
- int&cnt = dp[n1][n5][n10];
- int& flag = vis[n1][n5][n10];
- if (flag) return cnt;
- else if (c == 0) {
- flag = 1;
- cnt = 0;
- return cnt;
- }
- else {
- cnt = MAX;
- if (n1 >= 8) cnt = min(cnt, solve(c - 1, n1 - 8, n5, n10) + 8);
- if (n5 >= 1 && n1 >= 3) cnt = min(cnt, solve(c - 1, n1 - 3, n5 - 1, n10) + 4);
- if (n5 >= 2) cnt = min(cnt, solve(c - 1, n1 + 2, n5 - 2, n10) + 2);
- if (n10 >= 1) cnt = min(cnt, solve(c - 1, n1 + 2, n5, n10 - 1) + 1);
- if (n10 >= 1 && n1 >= 3) cnt = min(cnt, solve(c - 1, n1 - 3, n5 + 1, n10 - 1) + 4);
- flag = 1;
- return cnt;
- }
- }
- int main() {
- int cas;
- scanf("%d", &cas);
- while (cas--) {
- int c, n1, n5, n10;
- scanf("%d%d%d%d", &c, &n1, &n5, &n10);
- memset(vis, 0, sizeof(vis));
- printf("%d\n", solve(c, n1, n5, n10));
- }
- return 0;
- }
uva 10626 - Buying Coke(记忆化搜索)的更多相关文章
- UVA - 10118Free Candies(记忆化搜索)
题目:UVA - 10118Free Candies(记忆化搜索) 题目大意:给你四堆糖果,每一个糖果都有颜色.每次你都仅仅能拿随意一堆最上面的糖果,放到自己的篮子里.假设有两个糖果颜色同样的话,就行 ...
- UVa 1629 Cake slicing (记忆化搜索)
题意:一个矩形蛋糕上有好多个樱桃,现在要做的就是切割最少的距离,切出矩形形状的小蛋糕,让每个蛋糕上都有一个樱桃,问最少切割距离是多少. 析:很容易知道是记忆化搜索,我们用dp[u][d][l][r]来 ...
- UVa 10617 Again Palindromes / 记忆化搜索
删除若干个字母后 剩下的是回文串 求有多少个 记忆化搜索 dp[i][j]表示i j 之间有多少个 其实递推也可以的 long long #include <stdio.h> #inclu ...
- uva 10891 区间dp+记忆化搜索
https://vjudge.net/problem/UVA-10891 给定一个序列x,A和B依次取数,规则是每次只能从头或者尾部取走若干个数,A和B采取的策略使得自己取出的数尽量和最大,A是先手, ...
- uva 11762 数学期望+记忆化搜索
题目大意:给一个正整数N,每次可以在不超过N的素数中随机选择一个P,如果P是N的约数,则把N变成N/p,否则N不变,问平均情况下需要多少次随机选择,才能把N变成1? 分析:根据数学期望的线性和全期望公 ...
- uva 10651 - Pebble Solitaire(记忆化搜索)
题目链接:10651 - Pebble Solitaire 题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋 ...
- UVA - 10118 Free Candies 记忆化搜索经典
思路:d[a][b][c][d]表示从已经第一个篮子取了a颗糖,第二个取了b颗糖,第三个取了c颗糖,第四个取了d颗糖最多还能够获得多少糖果.首先明白一个问题:如果能分别取a,b,c,d个,不论如何取, ...
- uva 10581 - Partitioning for fun and profit(记忆化搜索+数论)
题目链接:uva 10581 - Partitioning for fun and profit 题目大意:给定m,n,k,将m分解成n份,然后依照每份的个数排定字典序,而且划分时要求ai−1≤ai, ...
- UVA - 10917 - Walk Through the Forest(最短路+记忆化搜索)
Problem UVA - 10917 - Walk Through the Forest Time Limit: 3000 mSec Problem Description Jimmy exp ...
随机推荐
- JAVA小项目之摇奖机
功能: 点击”摇杆“开始: 两种结束滚动方式,A:点击”摇杆“ B:分别点击 对应结果框的按钮: 实现最后减速停下来效果,模拟真实摇奖机. 知识点:A.线程的控制,B.图片轮播原理 效果图: 窗口 ...
- springxml配置构造函数入参
springxml配置构造函数入参有深入的理解 集合mockito创建对象的方法.功能等同于创建对象的代码. spring配置文件中定义bean的好处 便于集中管理,系统任何地方都可以引用使用.如果不 ...
- sqlserver中的统计语法
set statisitcs io {on | off} 显示与执行的sql语句有关的磁盘活动量的信息 set statistics profile {on | off} 显示语句的配置文件信息 se ...
- 3.RxJava详解
一.RxJava 到底是什么 异步(取代AsyncTask/Handler/XXX/...?) 二.RxJava 好在哪 简洁(逻辑的简洁,.一步一走) 举例: 题目:将文件夹中的图片都取 ...
- sql - 修改结构
1,修改表名 语法: sp_rename old_table_name, new_table_name 例如: sp_rename t_review, t_business 2,修改字段: MySQL ...
- PHP Date/Time 函数
Runtime 配置 Date/Time 函数的行为受到 php.ini 中设置的影响: 名称 描述 默认 PHP 版本 date.timezone 规定默认时区(所有的 Date/Time 函数使用 ...
- C#中英文混合字符串过长截断
/// <summary> /// 截断字符串 /// </summary> /// <param name="maxLength">最大长度& ...
- 高放的c++学习笔记之关联容器
标准库提供8个关联容器 按关键字有序保存有(红黑树实现) set map multset 关键字可重复出现的set multimap 关键字可重复出现的map 无序保存 哈希实现 unorderre ...
- Vigenère Cipher 维吉尼亚加解密算法
维吉尼亚的加解密有两种方法. 第一种是查表:第一行为明文,第一列为密钥,剩余的为对应的密文 第二种方法是转化计算法:逐个将字符转化为从零开始的数字,对数字进行加密/解密后,再转化为字符. 本文要用c+ ...
- jQuery 小知识点(插件)
1.jQuery插件小知识点: 估计很多人都没弄明白下面的东西,特从网络上搜索了下面的知识,自己以后用起来也比较方便: $.fn是指jquery的命名空间,加上fn上的方法及属性,会对jquery实例 ...