暑假- 动态规划 I-(T - Dividing)
来源:互联网 发布:ps cs5 mac版破解补丁 编辑:程序博客网 时间:2024/06/05 07:50
/*本题与N - Coins相似。把6种大理石看成6种硬币。判断能否由这个硬币凑成总和的一半[平均分为2份]多重背包:转换成01背包和完全背包*/#include<iostream>#include<algorithm>using namespace std;int marbles[8];int dp[220000];//因为只有6种大理石,每种数目最多为20000,则总为(1+2+3+4+5+6)*20000 //再除以2就是dp数组的最大值。int mymax(int a,int b){return a>b?a:b;}void CompletePack(int v,int m){for(int i=v;i<=m;i++){dp[i]=mymax(dp[i],dp[i-v]+v);}}void ZeroOnePack(int v,int m){for(int i=m;i>=v;i--){dp[i]=mymax(dp[i],dp[i-v]+v);}}void MuiltPack(int v,int c,int m){if(v*c>=m){CompletePack(v,m);}else{int k=1;while(c-k>=0){ZeroOnePack(v*k,m);c-=k;k*=2;}ZeroOnePack(v*c,m);}}int main(){int ans=0;while(1){ans++;int sum=0;memset(marbles,0,sizeof(marbles));memset(dp,0,sizeof(dp));for(int i=1;i<=6;i++){cin>>marbles[i];sum+=marbles[i]*i;//sum记录总价子}if(!(marbles[1]||marbles[2]||marbles[3]||marbles[4]||marbles[5]||marbles[6])){ //结束条件break;}if(sum%2!=0)//如果不能平分。{cout<<"Collection #"<<ans<<":"<<endl;cout<<"Can't be divided."<<endl;cout<<endl;continue;}sum=sum/2;for(int i=1;i<=6;i++){if(!marbles[i])//面值为i的硬币数量为0。{continue;}MuiltPack(i,marbles[i],sum);}if(dp[sum]==sum)//如果可以由这些硬币凑成总价值的一半。{cout<<"Collection #"<<ans<<":"<<endl;cout<<"Can be divided."<<endl;cout<<endl;}else{cout<<"Collection #"<<ans<<":"<<endl;cout<<"Can't be divided."<<endl;cout<<endl;}}return 0;}
0 0
- 暑假- 动态规划 I-(T - Dividing)
- 暑假-动态规划 I-(I- 搬寝室)
- 暑假-动态规划 I-(C- 免费馅饼)
- 暑假- 动态规划 I-(N - Coins)
- 暑假-动态规划 I-(Q - Washing Clothes)
- 暑假- 动态规划 I-(S - Investment)
- 暑假- 动态规划 I-(U - Space Elevator)
- Hdu1059 - Dividing - 动态规划
- zoj1149 Dividing 动态规划
- 暑假-动态规划 I-(H - FatMouse's Speed)
- 暑假-动态规划 III-I - Function Run Fun
- 动态规划 :POJ 1014 Dividing
- poj 1014 Dividing-动态规划
- UVA562 Dividing coins 动态规划
- 动态规划(acm pku 1014 Dividing)
- 【POJ1014】Dividing (动态规划,多重背包)
- poj1014 Dividing 动态规划 多重背包问题
- 动态规划入门——Dividing
- URAL - 1785,1293,1877,1409,1820,1787,1264,2012
- Java图形界面编程生成exe文件
- 第一次写博客,为自己学习apue的每一步做好记录
- 自己写的UnitY实用小工具或脚本——AR阴影以及Mask遮挡
- hd2137
- 暑假- 动态规划 I-(T - Dividing)
- 南阳oj NYoj 寻找最大数(三) 题目1057
- PAT 1001. A+B Format(水题)
- Masonry介绍与使用实践:快速上手Autolayout
- linux文件压缩与解压
- 挑剔的小杜
- 封装http请求返回统一json格式数据的网络操作
- hdu 5289 Assignment
- sscanf函数用法详解