bzoj1110 [POI2007]砝码Odw 贪心+进制拆分
来源:互联网 发布:福建万照软件 编辑:程序博客网 时间:2024/06/01 09:52
题意就不说了。
一开始居然在想直接dp,,,
看到是整数倍我的内心居然毫无波动。。真是傻的不行了。。
因为是整数倍,那我们可以把一个容器用砝码的重量做为进制拆分,然后从小到大一个个填就可以了,贪心策略肯定是最优的。
具体如何拆分看hzwer www:http://hzwer.com/4761.html
#include<cstdio>#include<algorithm>#include<iostream>#include<cstring>#define fo(i,a,b) for(int i=a;i<=b;i++)#define fd(i,a,b) for(int i=a;i>=b;i--)using namespace std;const int N=1e5+5;int n,m,tot;int a[N],b[N];int c[60],cnt[60];bool pd(int now){ fo(i,now+1,tot) if (cnt[i]) { cnt[now]+=c[i]/c[now]; cnt[i]--; return 1; } return 0;}int main(){ scanf("%d%d",&n,&m); fo(i,1,n)scanf("%d",&a[i]); fo(i,1,m)scanf("%d",&b[i]); sort(b+1,b+1+m); fo(i,1,m) if (b[i]!=b[i-1])c[++tot]=b[i]; fo(i,1,n) fd(j,tot,1) while (c[j]<=a[i]) { a[i]-=c[j]; cnt[j]++; } int now=1; fo(i,1,m) { while (b[i]>c[now])now++; if (cnt[now])cnt[now]--; else if (pd(now))cnt[now]--; else { printf("%d\n",i-1); return 0; } if (i==m)printf("%d\n",m); } return 0;}
0 0
- bzoj1110 [POI2007]砝码Odw 贪心+进制拆分
- BZOJ1110: [POI2007]砝码Odw
- 【bzoj1110】 [POI2007]砝码Odw
- BZOJ1110: [POI2007]砝码Odw
- 1110: [POI2007]砝码Odw 进制拆分,贪心
- BZOJ 1110: [POI2007]砝码Odw 进制转换+贪心
- BZOJ1100 [POI2007]砝码Odw 贪心
- BZOJ 1110 POI2007 砝码Odw 贪心
- BZOJ 1110 [POI2007]砝码Odw 进制+贪心
- [进制 贪心] BZOJ 1110 [POI2007]砝码Odw
- bzoj 1110: [POI2007]砝码Odw 贪心
- 【进制】BZOJ1110[砝码Odw]题解
- [POI2007]砝码Odw
- bzoj1110 [POI2007]对称轴osi manacher(kmp)
- 51 nod 砝码称重(贪心+进制转换思想)
- 51NOD 1449 砝码称重(贪心+进制思想)
- 51nod1344-贪心&进制思想&好题-砝码称重
- BZOJ 1111: [POI2007]四进制的天平Wag 进制拆分,DP求方案数
- OC 重点block-------5-------block作为函数的返回值
- Linux学习之十一egrep及扩展正则表达式(egrep)
- C++程序设计 重载
- opencv3中的imwrite函数详解
- 数据结构——线性表总结
- bzoj1110 [POI2007]砝码Odw 贪心+进制拆分
- HID Usage Tables (用途表)
- 程序2--分利润
- caffe 自带例子之MNIST的网络解析
- 引用调用和传值调用
- iOS定义字符串常量
- 欢迎使用CSDN-markdown编辑器
- 微信公众号开发中进入的第一个页面,点击浏览器的返回,返回到公众号聊天窗口
- mysql中的索引(聚簇索引和非聚簇索引)