问题大意:

有价值1-6的六种物品,分别规定其数目,问是否存在一种方法能使这些物品不拆分就能平均分给两个人

 #include <cstdio>
#include <cstring>
#include <iostream>
using namespace std; int v[] , ans , k;
int dp[];
//0-1背包
void zeroPack(int w , int v)
{
for(int i = ans ; i>=w ; i--)
dp[i] = max(dp[i] , dp[i - w]+v);
}
//完全背包
void compPack(int w , int v)
{
for(int i = w ; i<=ans ; i++)
dp[i] = max(dp[i] , dp[i - w]+v);
}
//多重背包
void multiPack(int n , int w , int v)
{
if(n*v > ans) compPack(w , v);
else{
int t = ;
while(n >= t){
zeroPack(t*w , t*v);
n-=t;
t <<= ;
}
if(n > ) zeroPack(n*w , n*v);
}
} int main()
{
int cas = ;
while(){
ans = ;
k = ;
for(int i = ; i< ; i++){
scanf("%d" , v+i);
ans += v[i]*(i+);
}
if(ans == ) break; if(ans & ){
printf("Collection #%d:\n" , ++cas);
puts("Can't be divided.");
puts("");
continue;
}
ans >>= ;
memset(dp , , sizeof(dp));
for(int i = ; i< ; i++){
multiPack(v[i] , i+ , i+);
} if(dp[ans] == ans){
printf("Collection #%d:\nCan be divided.\n\n" , ++cas);
}
else printf("Collection #%d:\nCan't be divided.\n\n" , ++cas);
}
return ;
}

最新文章

  1. 使用jquery脚本获取随笔、文章和评论的统计数,自定义显示位置
  2. JS转换HTML转义符
  3. Using Spring Boot without the parent POM
  4. JAVA学习Swing绝对局部简单学习
  5. POJ 3026 : Borg Maze(BFS + Prim)
  6. Silverlight中动画的性能浅析
  7. openstack 入门1
  8. IIS Express总结
  9. 从零开始学习前端开发 — 2、CSS基础
  10. Java 学习笔记 (六) Java 定义变量
  11. Bootstrap modal常用参数、方法和事件
  12. 【原创】运维基础之Zabbix(1)简介、安装、使用
  13. hdu 1999 不可摸数 筛选素数 两次打表
  14. vim命令以及gcc编译器的常用cmd
  15. WPF自定义进度条
  16. HTML5开源RPG游戏引擎lufylegendRPG 1.0.0发布
  17. [转]解读ASP.NET 5 &amp; MVC6系列(8):Session与Caching
  18. (转)详解HTML网页源码的charset格式
  19. shell实现洗牌随机
  20. Python 综合应用小项目一

热门文章

  1. bzoj 1706: [usaco2007 Nov]relays 奶牛接力跑【矩阵乘法+Floyd】
  2. P4196 [CQOI2006]凸多边形
  3. 洛谷 P3372 【模板】线段树 加法
  4. 树形DP URAL 1039 Anniversary Party
  5. 二分图最大匹配(匈牙利算法) UVA 10080 Gopher II
  6. Linux环境下卸载、安装及配置MySQL5.1
  7. 聊聊MyBatis缓存机制
  8. C#手机充值系统开发(基于聚合数据)
  9. js实现左右点击图片层叠滚动特效
  10. LN : leetcode 513 Find Bottom Left Tree Value