P1537 弹珠

题目描述

玛莎和比尔各自有自己的弹珠收藏。他们想重新分配收藏品,使两人能平等拥有弹珠。如果所有的弹珠的价值相同,那么他们就可以平分。但不幸的是,有一些弹珠更大,或者更美丽,所以,玛莎和比尔给每个弹珠一个1到6的价值。现在他们想平分这些弹珠,使每个人得到的总价值相同。不幸的是,他们发现,他们可能无法以这种方式分弹珠(即使弹珠的总价值为偶数)。例如,如果有一个价值为1、一个价值为3和两个价值为4的弹珠,这样他们就不能把弹珠分为价值相等的两部分。因此,他们想要你写一个程序,告诉他们是否能将所有弹珠分成价值相等的两部分。

输入输出格式

输入格式:

输入文件有若干行,行中包含六个非负整数N1,。..,N6,其中mi是数值i的弹珠的价值。最大弹珠总数将达到20000。

输入文件的最后一行是0 0 0 0 0 0 。不要处理这一行。

输出格式:

对于每一组数据,输出"Collection #k:", k为输出的是第几组, 接着是"Can be divided." 或 "Can't be divided.".

每一组输出后多打一个空行。

输入输出样例

输入样例#1: 复制

1 0 1 2 0 0
1 0 0 0 1 1
0 0 0 0 0 0
输出样例#1: 复制

Collection #1:
Can't be divided. Collection #2:
Can be divided.

洛谷题解:

整个题目的思路其实就是多重背包,背包容量是所有弹珠美丽总和的一半

我们可以先记录出所有弹珠的美丽总和,如果是奇数,那么一定不能平均分成两份(这个题目里有暗示)然后我们进行dp就行了

注意事项:

1.多重背包的二进制优化问题,可以节省大量时间,二进制优化实际将多重背包转化成01背包,意思是假如某个物体数量是13,那么

我们把它拆成1,2,4,6,四个物体 进行dp就能表示出这一种物体所有不同的取得的状态

2.背包压维。

3.多组数据要清空数组。

然后 状态表示:dp【j】 表示 能否取得美丽总和为j的弹珠

     转移方程::dp[j] = dp[j] || dp[j - stack[i]];

弄清楚dp是怎样进行枚举的:

普通的背包问题的二维表的枚举方式

 #include<cstdio>
#include<cstring>
using namespace std;
int dp[];
int stack[];
int top = ;
int num[];
int sum = ;
int main()
{
int cns = ;
while("Zuo Zhe is handsome")
{
cns ++;
top = ;
sum = ;
for(int i = ;i <= ;i ++)
{
int wei;
scanf("%d",&wei);
sum += wei * i;
int zz = ;
while(wei >= zz)
{
stack[++ top] = zz * i;
wei -= zz;
zz *= ;
}
if(wei)
stack[ ++ top] = wei * i;
}
if(top == )break;
printf("Collection #%d:\n",cns);
if(sum & )
{
printf("Can't be divided.\n\n");
continue;
}
sum /= ;
memset(dp,,sizeof(dp));
dp[] = ;
for(int i = ;i <= top;i ++)
{
for(int j = sum;j >= stack[i];j --)
{
dp[j] = dp[j] || dp[j - stack[i]];
}
}
printf(dp[sum] ?"Can be divided.\n\n":"Can't be divided.\n\n");
}
return ;
}

P1537 弹珠的更多相关文章

  1. ios版弹珠游戏源码

    这个是我们比较喜欢玩的一直小游戏的,ios版弹珠游戏源码,该游戏源码来着IOS教程网其他网友提供上传的,大家可以了解一下吧. nore_js_op>     <ignore_js_op&g ...

  2. CODEVS 2994 超级弹珠

    题目描述 Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩蛋游戏设备.Bessie把她们玩游戏的草坪划成了N*N单位的矩阵,同时列出了她的K个对手在草地上的位置 ...

  3. BZOJ 1709: [Usaco2007 Oct]Super Paintball超级弹珠

    Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩弹游戏设备(类乎于真人版CS). Bessie把她们玩游戏草坪划成了N * N(1 <= N<= 1 ...

  4. BZOJ1709: [Usaco2007 Oct]Super Paintball超级弹珠

    1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 324  Solved: ...

  5. 1709: [Usaco2007 Oct]Super Paintball超级弹珠

    1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 339  Solved:  ...

  6. 基于ubuntu16.04部署IBM开源区块链项目-弹珠资产管理(Marbles)

    前言 本教程基本上是对Marbles项目的翻译过程. 如果英文比较好的话,建议根据官方操作说明,一步步进行环境部署.当然你也可以参考本教程在自己的主机上部署该项目. Marbles 介绍 关于 Mar ...

  7. 洛谷OJ P2356 弹珠游戏 维护前缀和

    题目描述 Description MedalPluS 和他的小伙伴 NOIRP 发掘了一个骨灰级别的游戏--超级弹珠. 游戏的内容是:在一个 n*n 的矩阵里,有若干个敌人,你的弹珠可以摧毁敌人,但只 ...

  8. BZOJ1709超级弹珠

    1709: [Usaco2007 Oct]Super Paintball超级弹珠 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 352  Solved:  ...

  9. bzoj1709 [Usaco2007 Oct]Super Paintball超级弹珠 暴力

    [Usaco2007 Oct]Super Paintball超级弹珠 Description 奶牛们最近从著名的奶牛玩具制造商Tycow那里,买了一套仿真版彩弹游戏设备(类乎于真人版CS). Bess ...

随机推荐

  1. Linux下Mysql安装与常见问题解决方案

    1.Mysql安装 环境: Mysql版本: 开始安装: 首先检查环境有没有老版本mysql,有的话先卸载干净,具体百度. 接着先获取mysql的安装包:wget https://dev.mysql. ...

  2. [NOIP模拟25]题解

    A.字符串 Catalan数不能再裸了 #include<cstdio> #include<iostream> #include<cstring> using na ...

  3. angularjs的select使用2

    https://cnodejs.org/topic/549007b44823a0234c9e1716 myAppModule.controller('FrmController', ['$scope' ...

  4. 有关JWT(Json Web Token)的那些事

    用户认证是计算机安全领域一个永恒的热点话题,然而你会发现,开发者很少讨论有关Json Web Token的话题,其实使用Json Web Token集成到API身份验证机制中是容易,本文给大家普及基础 ...

  5. Java学习之Static

    Static(静态)是一种修饰符,用于修饰成员(成员变量.成员函数) 1.静态方法只能访问静态成员. 2.静态随着类的加载而加载 通过代码分析: class PersonDemo { public s ...

  6. JavaScript中 函数的创建和调用

    基础概念:定义函数的方式   一般定义函数有两种方式:    1:函数的声明    2:函数表达式 参考资料:https://blog.csdn.net/xixiruyiruyi/article/de ...

  7. Python变量的下划线

    xx: 公有变量 _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问 __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部 ...

  8. Python集成开发环境Pycharm+Git+Gitee(码云)

    ********************************************************************* 本文主要介绍集成开发环境的配置过程,方便多人协作办公.代码版 ...

  9. 基于MFC的Media Player播放器的控件方法和属性介绍

    |   版权声明:本文为博主原创文章,未经博主允许不得转载. 因为使用第三方多媒体库或是第三方控件(Media Player)辅助播放,我们则必须要了解到Media Player控件的一些属性 和方法 ...

  10. Python删除列表中的空格

    list1 = ['122','2333','3444',' ','422',' ',' ','54',' '] list1=[x.strip() for x in list1 if x.strip( ...