博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
贪心-poj-3040-Allowance
阅读量:6692 次
发布时间:2019-06-25

本文共 1462 字,大约阅读时间需要 4 分钟。

题目链接:

题目意思:

有n种(n<=20)面额的硬币,每种硬币面值能整除比它大的面值。给一个c,告诉每种硬币的面值和数量,求最多能够凑多少个c.

解题思路:

贪心。

对面值从大到下排序,当面值v>=c时,直接加上该种面值的数量一种就够了。

对于v<c的,从大到小,再不超过c的情况下,能装多少装多少,剩下的如果不为0,则从小到大,找到第一个>=left.

贪心原理:由于面值小的是面值大的的约数,在能够用面值大的时,如果用小的,就要用多个小的,而且还不能保证能凑到面值大的,可能更大。这样选择面值大的优。

代码:

 

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define eps 1e-6#define INF 0x3f3f3f3f#define PI acos(-1.0)#define ll __int64#define LL long long#define lson l,m,(rt<<1)#define rson m+1,r,(rt<<1)|1#pragma comment(linker, "/STACK:1024000000,1024000000")using namespace std;struct Inf{ int v,num;}inf[22];int need[22];int n,c;bool cmp(struct Inf a,struct Inf b){ return a.v>b.v;}int main(){ while(~scanf("%d%d",&n,&c)) { for(int i=1;i<=n;i++) scanf("%d%d",&inf[i].v,&inf[i].num); sort(inf+1,inf+n+1,cmp); int ans=0; while(true) { memset(need,0,sizeof(need)); int sum=c; for(int j=1;j<=n;j++) { int tmp=sum/inf[j].v; tmp=min(tmp,inf[j].num); need[j]+=tmp; //需要这么多个 sum-=tmp*inf[j].v; //还剩下的 } if(sum>0) //不能恰好凑齐,用一个满足的最小的补 { for(int j=n;j>=1;j--) { if(inf[j].num-need[j]&&inf[j].v>=sum) { need[j]++; sum=0; break; } } } if(sum>0) //再也凑不到了 break; int Min=INF; for(int j=1;j<=n;j++)//找到能够凑c的最多次数 if(need[j]) Min=min(Min,inf[j].num/need[j]); ans+=Min; for(int j=1;j<=n;j++) //减去个数 inf[j].num-=Min*need[j]; } printf("%d\n",ans); } return 0;}

 

 

转载地址:http://hakoo.baihongyu.com/

你可能感兴趣的文章
为centos 5.5 x86设置双网卡bonding
查看>>
在 Xcode 里编译运行 Python 代码
查看>>
什么是License
查看>>
英文单词记忆( 积累中 )
查看>>
Android 无闪烁启动画面程序源码
查看>>
基于uml的面向对象的概要设计
查看>>
用 PHP 读取文件的正确方法
查看>>
Authentication and Integration 第三篇:Oracle LDAP介绍
查看>>
我的友情链接
查看>>
路由器 交换机 摩登Modem的区别!
查看>>
Nagios+ PNP4nagios + rrdtool 监控平台建立
查看>>
linux 磁盘的分区
查看>>
windows手动启动mysql mysql.bat
查看>>
TCC型分布式事务原理和实现之:原理介绍
查看>>
配置outlook收发domino邮件
查看>>
用普通计算机假设基于liunx系统的NAS部署FineReport决策系统
查看>>
[精讲-5]BitLocker
查看>>
TensorFlow Serving在Kubernetes中的实践
查看>>
Python函数与类参数默认值陷阱
查看>>
SQLite数据类型
查看>>