博客
关于我
【背包dp】P5020 货币系统
阅读量:286 次
发布时间:2019-03-03

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

通过观察可以发现等价的两个货币系统其实是子集的关系,也就是说把给定系统内的可以用其他面额的钱表示出来的金额删掉即可

关于证明:

如果A和B货币系统等价,且存在一个数字t属于A,不属于B,那么根据题意,t这个金额一定可以被B的元素表示出来,也就是说,从A集合中删掉这个数字,仍不影响A系统能表示出的所有金额

 

代码

#include
using namespace std;int t,n,a[105],amount[25005];int main(){ freopen("a.in","r",stdin); freopen("a.out","w",stdout); scanf("%d",&t); while(t--) { int ans=0; memset(amount,0,sizeof(amount)); scanf("%d",&n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),amount[a[i]]=2; sort(a+1,a+n+1); for(int i=1;i<=a[n];i++) if(amount[i]) for(int j=1;j<=n,i+a[j]<=a[n];j++) amount[i+a[j]]=1; for(int i=1;i<=a[n];i++) if(amount[i]==2) ans++; printf("%d\n",ans); } return 0;}

 

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

你可能感兴趣的文章
Windows10 下springboot应用无法被外部网络访问
查看>>
报错:在IDEA中springboot项目操作数据库,配置文件驱动com.mysql.cj.jdbc.Driver标红
查看>>
redis报错(error) NOAUTH Authentication required.解决办法
查看>>
对象和封装
查看>>
【树形dp】P1273 有线电视网
查看>>
【分层图最短路】P4568 [JLOI2011]飞行路线
查看>>
【最短路】P4408 [NOI2003]逃学的小孩
查看>>
2020C证(安全员)模拟考试题及C证(安全员)模拟考试系统
查看>>
2020电工(初级)考试及电工(初级)考试软件
查看>>
2020建筑电工(建筑特殊工种)实操考试视频及建筑电工(建筑特殊工种)作业模拟考试
查看>>
2020N1叉车司机模拟考试题库及N1叉车司机复审模拟考试
查看>>
2020熔化焊接与热切割考试及熔化焊接与热切割考试题库
查看>>
2020年G3锅炉水处理报名考试及G3锅炉水处理考试申请表
查看>>
2020年制冷与空调设备运行操作答案解析及制冷与空调设备运行操作考试总结
查看>>
2020年保育员(初级)考试资料及保育员(初级)新版试题
查看>>
2020年茶艺师(高级)考试内容及茶艺师(高级)考试申请表
查看>>
2021年烟花爆竹经营单位安全管理人员考试及烟花爆竹经营单位安全管理人员考试试卷
查看>>
2021年过氧化工艺试题及答案及过氧化工艺考试平台
查看>>
2021年重氮化工艺考试题库及重氮化工艺考试报名
查看>>
2021年车工(高级)考试总结及车工(高级)试题及答案
查看>>