HDU 1059 Dividing 多重背包
2015-12-18 16:38
204 查看
题意:有n1,n2,n3,n4,n5,n6n1,n2,n3,n4,n5,n6个质量分别为1,2,3,4,5,61,2,3,4,5,6的大理石。问能不能把它们分成相同的两份?
思路:多重背包。求出dp[n/2]dp[n/2]是否能达到即可。
http://acm.hdu.edu.cn/showproblem.php?pid=1059/********************************************* Problem : HDU 1059 Author : NMfloat InkTime (c) NM . All Rights Reserved . ********************************************/ #include <map> #include <set> #include <queue> #include <cmath> #include <ctime> #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> #define rep(i,a,b) for(int i = (a) ; i <= (b) ; i ++) #define rrep(i,a,b) for(int i = (b) ; i >= (a) ; i --) #define repE(p,u) for(Edge * p = G[u].first ; p ; p = p -> next) #define cls(a,x) memset(a,x,sizeof(a)) #define eps 1e-8 using namespace std; const int MOD = 1e9+7; const int INF = 0x3f3f3f3f; const int MAXN = 1e5+5; const int MAXE = 2e5+5; typedef long long LL; typedef unsigned long long ULL; int T,n,m,k; int fx[] = {0,1,-1,0,0}; int fy[] = {0,0,0,-1,1}; int dp[500005]; int num[7]; int N; int ok = 0; int base[32]; void ZEROONEPACK(int value) { rrep(i,value,N) { if(dp[i-value]) dp[i] = 1; } } void COMPPACK(int value) { rep(i,value,N) { if(dp[i-value]) dp[i] = 1; } } void input() { } void solve() { if(N&1) return ; cls(dp,0); dp[0] = 1 ; N = N / 2; rep(i,1,6) { if(i*num[i] >= N) COMPPACK(i); else { int tmp = num[i]; int pos = 1; while(tmp > base[pos]) { ZEROONEPACK(base[pos]*i); tmp -= base[pos]; pos ++; } if(tmp) ZEROONEPACK(tmp*i); } } if(dp ) ok = 1; } int main(void) { //freopen("a.in","r",stdin); base[1] = 1; rep(i,2,30) base[i] = base[i-1] * 2; int CASENUM = 0; while(1) { N = 0 ; ok = 0; rep(i,1,6) { scanf("%d",&num[i]) ; N += i * num[i];} if(N == 0) break; input(); solve(); printf("Collection #%d:\n",++CASENUM); if(ok) puts("Can be divided.\n"); else puts("Can't be divided.\n"); } return 0; }
相关文章推荐
- Underscore.js 1.8.3
- 文件签名表
- http get post
- mysql断线重连设置
- C++11: bitset
- leetcode Maximum Product of Word Lengths
- Android实战 - 音心播放器 (MusicActivity ,MusicNotification,MusicService总结)
- 关于移动平台GPU浮点运算的文章转载3
- 自定义控件FlexibleListView,一个简单的改善就能解放用户在浏览时的有效可视面积
- 自定义控件FlexibleListView,一个简单的改善就能解放用户在浏览时的有效可视面积
- 1935: [Shoi2007]Tree 园丁的烦恼
- 文本域光标操作-selection range
- mac tomcat9
- 文章标题
- MySQL调优系列_日志分析
- 面向对象设计中抽象类与接口的区别
- 技术型问题集合
- android ListView上拉加载更多
- 使用outlook快速步骤功能提高邮件处理效率
- 第16周SHH数据结构-【项目1-验证算法(5)直接选择排序 】