HDU 1059 Dividing(多重背包)
来源:互联网 发布:淘宝评论怎么没有了 编辑:程序博客网 时间:2024/06/05 07:42
题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1059
思路:简单多重背包,按照题目数据开的数组,结果RE了,果断开大,直接过了
AC代码:
#include <iostream>#include <cstdio>#include <cstdlib>#include <algorithm>#include <queue>#include <stack>#include <map>#include <cstring>#include <climits>#include <cmath>#include <cctype>const int inf = 0x3f3f3f3f;//1061109567typedef long long LL;#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1using namespace std;int a[10];int dp[100100];int sum;void complete_pack(int value){ for(int i=value; i<=sum; i++) dp[i] = max(dp[i],dp[i-value]+value);}void zeroone_pack(int value){ for(int i=sum; i>=value; i--) dp[i] = max(dp[i],dp[i-value]+value);}void multi_pack(){ for(int i=1; i<=6; i++) { if(a[i] * i >= sum) complete_pack(i); else { int k = 1; int count1 = a[i]; while(k < count1) { zeroone_pack(k*i); count1 -= k; k *= 2; } zeroone_pack(count1*i); } }}int main(){ int cas = 1; while(true) { sum = 0; memset(dp,0,sizeof(dp)); for(int i=1; i<=6; i++) { scanf("%d",&a[i]); sum += (a[i] * i); } if(sum == 0) break; printf("Collection #%d:\n",cas++); if(sum & 1) { printf("Can't be divided.\n\n"); continue; } sum /= 2; multi_pack(); if(dp[sum] == sum) printf("Can be divided.\n\n"); else printf("Can't be divided.\n\n"); } 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 多重背包
- 数字反演
- Android开发:按一定频率同时获取多个传感器数据
- BZOJ 1997 HNOI 2010 Planar 2-SAT
- 在c代码中使用logcat
- C++ 利于宏模拟C#的正则表达式
- HDU 1059 Dividing(多重背包)
- Android中序列化的实现?使用Serializable还是Parcelable
- 数学归纳法初探
- Android.mk内容介绍
- JavaScript作用域和执行环境
- 第十一章 异常处理
- initializer_list形参总结
- java学习之实验二
- Boost库 对时间和日期的处理 date_timer库