HDU 5527 Too Rich (2015长春站A题&&贪心)
2015-11-04 23:57
429 查看
比赛的时候最后35分钟队友写的,感觉最后可能太紧张了,写完了,但是没调完,然后这道题都没提交。。。
分析:贪心,用尽量多的小面值的纸币来凑数,基本上每一个数都能整除后面一个数,所以前ii种面值最多能凑出sum[i]sum[i]圆,那么第i+1i+1种面值需要⌈p−sum[i]num[i+1]⌉\lceil{{p-sum[i]}\over{num[i+1]}}\rceil,此时有个小问题就是,2020并不能整除5050,但是20|2∗5020|2*50,所以当面值为50,50050,500的时候,可能需要多取一张。
代码:
分析:贪心,用尽量多的小面值的纸币来凑数,基本上每一个数都能整除后面一个数,所以前ii种面值最多能凑出sum[i]sum[i]圆,那么第i+1i+1种面值需要⌈p−sum[i]num[i+1]⌉\lceil{{p-sum[i]}\over{num[i+1]}}\rceil,此时有个小问题就是,2020并不能整除5050,但是20|2∗5020|2*50,所以当面值为50,50050,500的时候,可能需要多取一张。
代码:
#include <bits/stdc++.h> #define LL long long #define FOR(i,x,y) for(int i = x;i < y;++ i) #define IFOR(i,x,y) for(int i = x;i > y;-- i) using namespace std; int num[11] = {0,1,5,10,20,50,100,200,500,1000,2000}; int p,cnt[11]; LL sum[11],ans; void dfs(int wei,LL u,LL sz){ if(wei == 0){ if(!u) ans = max(ans,sz); return; } if(u < 0) return; int v = u - sum[wei-1]; if(v <= 0){ dfs(wei-1,u,sz); if(cnt[wei] && u >= num[wei]) dfs(wei-1,u-num[wei],sz+1); } else{ LL res = (v+num[wei]-1)/num[wei]; if(res > cnt[wei]) return; dfs(wei-1,u-res*num[wei],sz+res); res ++; if(res > cnt[wei]) return; dfs(wei-1,u-res*num[wei],sz+res); } } int main() { //freopen("test.in","r",stdin); int T; scanf("%d",&T); while(T--){ scanf("%d",&p); sum[0] = 0; FOR(i,1,11) scanf("%d",&cnt[i]),sum[i] = sum[i-1]+cnt[i]*num[i]; ans = -1; dfs(10,p,0); printf("%I64d\n",ans); } return 0; }
相关文章推荐
- error: dst ref refs/heads/zhCN_v0.13.1 receives from more than one src.
- 第七章 过滤器 Filter(二)
- mysql 学习记录(二十二)--mysql的应用优化
- Install .NET Framework 4.5.2 on a Cloud Service Role
- 策略模式(Strategy Pattern)
- ant编绎示例
- MySQL5.7基于mysqldump的主从复制
- Idea字体美化终极解决方案
- linux:/etc/sysctl.conf 内核配置参数分析
- tomcat中发布路径、站点问题
- 12.线性表之数组栈的基本操作
- Xcode7的发布后的crash跟踪,轻松定位崩溃代码 Address Sanitizer: 妈妈再也不用担心 EXC_BAD_ACCESS
- 用例图练习..................................................
- kafka运行Producer和Consumer时出现Failed to load class org.slf4j.impl.StaticLoggerBinder错误
- Mysql备份工具比较
- 自定义ImageView系列 - 区域截图(上)
- Android:通过静态变量传递数据
- hdu acm 1874 畅通工程续
- sqlserver 使用sql语句创建数据库、创建表
- 字符串---将一句话里的单词进行倒置,标点符号不倒换