NOIp2018D1T2 货币系统【分析&完全背包】
看到题目瞬间想起某凯的疑惑,感觉不会做....然后观察样例可以知道,去掉原来货币系统中能够被其他币值凑出来的数就是答案(样例分析法),然后就完事了(huaji)。
简单理解一下吧:
首先,去掉原来货币系统中能够被其他币值凑出来的数形成的新的货币系统能够凑出原来就能够凑出来的数,这个很好理解。设原来的货币系统为$A$,假设存在一个比上文所述更优的答案货币系统为$B$,则有$x$属于$A$,$x$不能由$A$中的一些数拼成,且$x$不属于$B$,$x$能由$B$中的一些数拼成。那么$B$中一定存在一个比$x$小的数,他不属于$A$而且也不能由$A$中的数凑出来,否则$A$就可以凑成$x$了。
所以直接写个完全背包判断能不能构成这个数就好了。
- #include<cstdio>
- #include<algorithm>
- #include<vector>
- #include<cstring>
- #include<queue>
- #include<map>
- #include<iostream>
- #include<stack>
- using namespace std;
- #define ll long long
- #define INF 0x3f3f3f3f
- #define N 105
- #define M 25001
- int rd()
- {
- int f=,s=;char c=getchar();
- while(c<''||c>''){if(c=='-') f=-;c=getchar();}
- while(c>=''&&c<=''){s=(s<<)+(s<<)+(c^);c=getchar();}
- return f*s;
- }
- int n;
- int a[N];
- bool f[M+];
- int cnt;
- int main()
- {
- int T=rd();
- while(T--)
- {
- n=rd();
- for(int i=;i<=n;i++)
- a[i]=rd();
- sort(a+,a+n+);
- memset(f,,sizeof(f));
- cnt=;
- f[]=;
- for(int i=;i<=n;i++)
- {
- if(f[a[i]])
- {
- cnt++;
- continue;
- }
- for(int j=a[i];j<=M;j++)
- if(f[j-a[i]])
- f[j]=;
- }
- printf("%d\n",n-cnt);
- }
- return ;
- }
Code
NOIp2018D1T2 货币系统【分析&完全背包】的更多相关文章
- USACO 2.3.4 Money Systems 货币系统(完全背包)
Description 母牛们不但创建了他们自己的政府而且选择了建立了自己的货币系统. [In their own rebellious way],,他们对货币的数值感到好奇. 传统地,一个货币系统是 ...
- Luogu5020 货币系统 (完全背包)
bool型完全背包 #include <iostream> #include <cstdio> #include <cstring> #include <al ...
- luogu5020 [NOIp2018]货币系统 (完全背包)
我那个新的货币系统,就是把原来的货币系统中能被其他数表示的数删掉 那我就算有多少数能被别的数表示,那肯定是要被比它小的表示 于是排个序做完全背包就好了 但是我太zz不会完全背包,然后写了个bitset ...
- P1474 货币系统 Money Systems(完全背包)(大水题)
题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单 ...
- 洛谷 P1474 货币系统 Money Systems(经典)【完全背包】+【恰好装满的最大方案数量】
题目链接:https://www.luogu.org/problemnew/show/P1474 题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对 ...
- 【数学】【背包】【NOIP2018】P5020 货币系统
传送门 Description 在网友的国度中共有 \(n\) 种不同面额的货币,第 \(i\) 种货币的面额为 \(a[i]\),你可以假设每一种货币都有无穷多张.为了方便,我们把货币种数为 \(n ...
- 【洛谷】P1474 货币系统 Money Systems(背包dp)
题目描述 母牛们不但创建了它们自己的政府而且选择了建立了自己的货币系统.由于它们特殊的思考方式,它们对货币的数值感到好奇. 传统地,一个货币系统是由1,5,10,20 或 25,50, 和 100的单 ...
- 背包 || NOIP 2018 D1 T2 || Luogu P5020 货币系统
题面:P5020 货币系统 题解: 显然要求的货币系统是当前货币系统的子集时答案会更优,于是考虑从当前货币系统中删数 一个大数如果能被其他小数表示出来,它就可以去掉 把数据排个序去个重,然后直接背包 ...
- [NOIp2018]货币系统 背包
LG传送门 完全背包板子题 显然就是判断有多少种面值的货币可以被其他面值的货币表示,完全背包搞一搞就好了. 考场代码(一看这两格缩进就知道是考场代码): #include<cstdio> ...
随机推荐
- HDU 6045 - Is Derek lying | 2017 Multi-University Training Contest 2
/* HDU 6045 - Is Derek lying [ 分析 ] 题意: 有N个问题, 每个问题有A,B,C三种答案,答对加一分,答错不加分 给出甲乙两人的答案,给出两人的分数先x, y,问分数 ...
- pyspark中的dataframe的观察操作
来自于:http://www.bubuko.com/infodetail-2802814.html 1.读取: sparkDF = spark.read.csv(path) sparkDF = spa ...
- yii项目连接多个数据库时, MySQL报错No such file or directory
服务器错误 yii\db\Exception SQLSTATE[HY000] [2002] No such file or directory ###'xxx是项目根目录' #0 xxx/vendor ...
- word粘贴图片到ckeitor
在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper. 通过知乎提供的思路找到粘贴的原理,通过TheViper找 ...
- HFUUOJ1023 闷声发大财 概率dp
题意 xyq有\(n\)个骰子,第\(i\)个骰子有\(a_i\)面,每次xyq都会把\(n\)个骰子搞一遍,其中的最小值作为结果,问最终结果的期望\(\mod (10^9+7 )\). 分析 lfx ...
- 【IOI2018】机械娃娃
看到的时候感到很不可做,因为所有的开关都要状态归零.因此可以得到两分的好成绩. --然后 yhx-12243 说:这不是线段树优化建图吗? 于是我获得了启发,会做了-- 还不是和上次一样,通过提示做出 ...
- 微信小程序_(表单组件)checkbox与label
微信小程序组件checkbox官方文档 传送门 微信小程序组件label官方文档 传送门 Learn 一.checkbox组件 二.label组件与checkbox组件共用 一.checkbox组件 ...
- C++入门经典-例8.3-子类显示调用父类构造函数
1:当父类含有带参数的构造函数时,创建子类的时候会调用它吗?答案是通过显示方式才可以调用. 无论创建子类对象时调用的是那种子类构造函数,都会自动调用父类默认构造函数.若想使用父类带参数的构造函数,则需 ...
- HDX Insight Installation & Configuration
NetScaler Insight Center 11.1 Installation & Configuration NetScaler Insight Center 11.0 Insta ...
- python3.*之列表常用操作
首先定义一个列表:names= ["xiaoming","xiaogang","xiaomei","xiaohong"] ...