这里;http://acm.hdu.edu.cn/showproblem.php?pid=1059

题意是有价值分别为1,2,3,4,5,6的商品各若干个,给出每种商品的数量,问是否能够分成价值相等的两份.

联想到多重背包,稍微用二进制优化一下。(最近身体不适,压力山大啊)

 #include<iostream>
#include<cstring>
#include<cstdio>
#define inf 70000
using namespace std;
int dp[inf];
int sum;
void pack(int price)
{
for(int i = sum; i >= price; i--) dp[i] = max(dp[i], dp[i - price] + price);
}
int main()
{
int a[],i,q=,j;
while (~scanf("%d %d %d %d %d %d",&a[],&a[],&a[],&a[],&a[],&a[]))
{
if (a[]==&&a[]==&&a[]==&&a[]==&&a[]==&&a[]==)
break;
memset(dp,-inf,sizeof(dp));
dp[]=;
printf("Collection #%d:\n",q++);
sum=;
for (i=;i<=;i++)
sum+=a[i]*i;
if (sum%!=)
{
printf("Can't be divided.\n\n");
continue;
}
sum/=;
for (i=;i<=;i++)
{
if (i*a[i]>=sum)
{
for (j=i;j<=sum;j++)
dp[j]=max(dp[j],dp[j-i]+i);
}
else
{
int k = ;
while(k < a[i])
{
pack(k * i);
a[i] -= k;
k += k;
}
pack(a[i] * i);
}
}
if (dp[sum]==sum)
printf("Can be divided.\n\n");
else
printf("Can't be divided.\n\n");
}
return ;
}

hdu 1059 (多重背包) Dividing的更多相关文章

  1. Dividing (hdu 1059 多重背包)

    Dividing Sample Input 1 0 1 2 0 0 价值为1,2,3,4,5,6的物品数目分别为 1 0 1 2 0 0,求能否将这些物品按价值分为两堆,转化为多重背包.1 0 0 0 ...

  2. hdu 1059 多重背包

    题意:价值分别为1,2,3,4,5,6的物品个数分别为a[1],a[2],a[3],a[4],a[5],a[6],问能不能分成两堆价值相等的. 解法:转化成多重背包 #include<stdio ...

  3. hdu 1059 多重背包 背包指数分块

    思路: 这个方法要看<浅谈几类背包问题>这篇论文. #include"stdio.h" #define Max(a,b) (a)>(b)?(a):(b) ],k[ ...

  4. hdu 5445 多重背包

    Food Problem Time Limit: 3000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Others)To ...

  5. hdu 2191 多重背包 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活

    http://acm.hdu.edu.cn/showproblem.php?pid=2191 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...

  6. Big Event in HDU(HDU 1171 多重背包)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  7. HDU 1171 Big Event in HDU (多重背包)

    Big Event in HDU Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others ...

  8. HDU1171--Big Event in HDU(多重背包)

    Big Event in HDU   Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) ...

  9. Big Event in HDU(多重背包套用模板)

    http://acm.hdu.edu.cn/showproblem.php?pid=1171 Big Event in HDU Time Limit: 10000/5000 MS (Java/Othe ...

随机推荐

  1. Java学习01 (第一遍)

    java se - 桌面 java ee - 网页 Jdk :Jre 区别Jdk-开发环境必要Jre-运行环境需要Jdk包含Jre,安装完Jdk就可以了 Javac Demo1.java-Javac ...

  2. swift中的UITextField

    let userTF = UITextField(frame: CGRectMake(,,,)) userTF.backgroundColor = UIColor.redColor() // 输入框样 ...

  3. linux配置虚拟主机

    linux 下怎么配置虚拟主机 linux 下怎么配置虚拟主机,在网上找到N个资料都是高手们随便说几句,都没怎么说清楚.问题:  我把域名(bs.jxiop.com)指向了 68.10.140.10 ...

  4. mui-当使用addeleventlisener()方法绑定事件时选择器无法绑定事件

    在mui中绑定事件不能用jQuery或mui(“#XX”)的形式选取某个元素,而是document.getelementbyid()的形式 mui(“#XX”)可以使用on方法绑定事件

  5. RealtimeRendering III

    [RealtimeRendering III] 1.砖块渲染实例. 1)brick & mortar diffuse texture. 2)brick & mortar gloss t ...

  6. Tween animation

    [Tween animation] An animation defined in XML that performs transitions such as rotating, fading, mo ...

  7. Windows 2012设置允许单个用户连接多个会话的方法

    WINDOWS 2012 服务器默认只允许单个用户连接一个远程桌面会话,如果已有连接登陆,另外的连接再登陆会踢掉之前的连接.如果需要两个远程桌面同时连接 找到:HKEY_LOCAL_MACHINE\S ...

  8. python lambda 函数

    lambda 函数,也叫匿名函数,是一个不需要使用def 关键字定义的小函数.返回一个函数地址. 表达式只能有一个,参数可以有多个. a = lambda x:x*x a(3) 返回的是9

  9. serv-U使用

    该软件是设置ftp服务器的 可以百度查询ftp服务器安装攻略,如 https://jingyan.baidu.com/article/cb5d6105c00bba005c2fe0ca.html 问题: ...

  10. 打印低头思故乡 java

    public static void main(String args[][){ char poet[] = str.tocharArray(); int pos = 18; while(true){ ...