HDU 1059 Dividing (多重背包)
来源:互联网 发布:jquery拼接json字符串 编辑:程序博客网 时间:2024/06/05 09:12
传送门:HDU 1059
#include <iostream>#include <cstdio>#include <cstring>using namespace std;int V,v;int data[7],dp[120001];void bag01(int c,int w){ for(int j=V;j>=c;j--) dp[j]=max(dp[j],dp[j-c]+w);}void bagall(int c,int w){ for(int j=c;j<=V;j++) dp[j]=max(dp[j],dp[j-c]+w);}void dcbag(int c,int w,int n){ if(c*n>V) bagall(c,w); else { int num=1; while(num<n) { bag01(c*num,w*num); n-=num; num+=num; } bag01(c*n,w*n); }}int main(){ int sum,t=1; while(~scanf("%d%d%d%d%d%d",&data[1],&data[2],&data[3],&data[4],&data[5],&data[6])) { if(data[1]==0&&data[2]==0&&data[3]==0&&data[4]==0&&data[5]==0&&data[6]==0) break; cout<<"Collection #"<<t<<":"<<endl; sum=data[1]+data[2]*2+data[3]*3+data[4]*4+data[5]*5+data[6]*6; if(sum%2!=0) cout<<"Can't be divided."<<endl<<endl; else { V=sum/2; memset(dp,0,sizeof(dp)); for(int i=1;i<=6;i++) dcbag(i,i,data[i]); if(dp[V]==V) cout<<"Can be divided."<<endl<<endl; else cout<<"Can't be divided."<<endl<<endl; } t++; } return 0;}
0 0
- hdu 1059 Dividing (多重背包)
- hdu 1059 Dividing (多重背包 )
- HDU 1059 Dividing(多重背包)
- HDU 1059 Dividing (多重背包)
- HDU 1059 - Dividing(多重背包)
- hdu 1059 Dividing(多重背包)
- HDU 1059 Dividing(多重背包)
- HDU 1059 Dividing(多重背包)
- hdu 1059 Dividing(多重背包)
- HDU-1059 Dividing (多重背包)
- HDU-1059-Dividing(多重背包)
- hdu 1059 Dividing 多重背包
- hdu 1059 Dividing(多重背包)
- hdu 1059 Dividing(多重背包)
- HDU 1059 Dividing(多重背包)
- hdu 1059 Dividing 多重背包
- Hdu 1059 Dividing -- 多重背包
- hdu 1059 Dividing 多重背包
- ubuntu下调节鼠标速度
- IOS开发中判断字符串是否为空字符的方法
- 重写,重载,多态
- mysql 一次更新(update)多条记录
- 五、CCNode
- HDU 1059 Dividing (多重背包)
- 六、CCLayer
- android中CallBack的理解
- 图解classloader加载class的流程及自定义ClassLoader
- 七、CCScene
- ThinkPHP运算符计算
- COM,activex使用自定义类型传递数据
- iOS7如何隐藏状态栏
- OnSetCursor由消息 WM_SETCURSOR 触发 The WM_SETCURSOR message is sent to a window if the mouse causes th