Dividing (hdu 1059 多重背包)
Dividing
1 0 0 0 1 1
0 0 0 0 0 0
Can't be divided.
Can be divided.
- #include <algorithm>
- #include <iostream>
- #include <cstring>
- #include <cstdio>
- using namespace std;
- int dp[];
- int a[];
- int value=;
- void completepack(int cost,int weight) //代价cost换取价值weight 完全背包
- {
- for(int i=cost;i<=value;i++)
- dp[i]=max(dp[i],dp[i-cost]+weight);
- }
- void zeroonepack(int cost,int weight)
- {
- for(int i=value;i>=cost;i--)
- dp[i]=max(dp[i],dp[i-cost]+weight);
- }
- void multiplepack(int cost,int weight,int amount)
- {
- int t=;
- if(amount*cost>=value)
- completepack(cost,weight);
- else
- {
- while(t<amount)
- {
- zeroonepack(cost*t,cost*t);
- amount-=t;
- t<<=;
- }
- if(amount)
- zeroonepack(cost*amount,cost*amount);
- }
- }
- int main()
- {
- int i,j,t=;
- freopen("in.txt","r",stdin);
- while(scanf("%d%d%d%d%d%d",&a[],&a[],&a[],&a[],&a[],&a[]))
- {
- int sum=;
- for(i=;i<=;i++)
- sum+=a[i]*i;
- value=sum/;
- if(sum==)
- break;
- printf("Collection #%d:\n",++t);
- if(sum%)
- {
- printf("Can't be divided.\n\n");
- continue;
- }
- memset(dp,,sizeof(dp));
- for(i=;i<=;i++)
- {
- if(a[i])
- multiplepack(i,i,a[i]);
- }
- if(dp[value]==value)
- printf("Can be divided.\n\n");
- else
- printf("Can't be divided.\n\n");
- }
- return ;
- }
Dividing (hdu 1059 多重背包)的更多相关文章
- hdu 1059 (多重背包) Dividing
这里;http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意是有价值分别为1,2,3,4,5,6的商品各若干个,给出每种商品的数量,问是否能够分成价值相等的 ...
- hdu 1059 多重背包
题意:价值分别为1,2,3,4,5,6的物品个数分别为a[1],a[2],a[3],a[4],a[5],a[6],问能不能分成两堆价值相等的. 解法:转化成多重背包 #include<stdio ...
- hdu 1059 多重背包 背包指数分块
思路: 这个方法要看<浅谈几类背包问题>这篇论文. #include"stdio.h" #define Max(a,b) (a)>(b)?(a):(b) ],k[ ...
- hdu 5445 多重背包
Food Problem Time Limit: 3000/2000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)To ...
- HDU 1059 Dividing 分配(多重背包,母函数)
题意: 两个人共同收藏了一些石头,现在要分道扬镳,得分资产了,石头具有不同的收藏价值,分别为1.2.3.4.5.6共6个价钱.问:是否能公平分配? 输入: 每行为一个测试例子,每行包括6个数字,分别对 ...
- ACM学习历程—HDU 1059 Dividing(dp && 多重背包)
Description Marsha and Bill own a collection of marbles. They want to split the collection among the ...
- hdu 2191 多重背包 悼念512汶川大地震遇难同胞——珍惜现在,感恩生活
http://acm.hdu.edu.cn/showproblem.php?pid=2191 New~ 欢迎“热爱编程”的高考少年——报考杭州电子科技大学计算机学院关于2015年杭电ACM暑期集训队的 ...
- Big Event in HDU(HDU 1171 多重背包)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
- HDU 1171 Big Event in HDU (多重背包)
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others ...
随机推荐
- 《Java程序员面试笔试宝典》之volatile有什么作用
在由Java语言编写的程序中,有时候为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量的时候有可能会直接从缓存(例如寄存器)中来读取这个值,而不会去内存中 ...
- xmind教程
xmind是什么东西我不多说.作为一个程序员,我通常用来编写一个文档.比如某个模块的设计或者流程图. 一开始我是以word画图的方式来用xmind的,即想要什么图形,就去插入里面找.结果碰了一鼻子灰, ...
- python字符集选择
# coding=utf8 或者 # -*- coding:utf-8 -*- 在python2 中默认是ASCII码的字符集,但可以引入其他的字符集 这个需要在头信息中引入: 而在python3中 ...
- 删除list中指定值的元素
public class ListRemoveAll { public static void main(String[] args) { // TODO Auto-generated method ...
- Windows Live Writer 代码插件改造
源码和插件都在后面,如果不想看我神神叨叨的可以直接到文章后面下载 一 .找插件 在使用Windows Live Writer 经常要用到插入代码的功能,根据博客园中教程,分别使用了: WindowsL ...
- NoSQL 简介
NoSQL(NoSQL = Not Only SQL ),意即"不仅仅是SQL". 在现代的计算系统上每天网络上都会产生庞大的数据量. 这些数据有很大一部分是由关系数据库管理系统( ...
- 用Visual Studio2010 编译 C++文件"hello world”
本周开始学习C++语言,用Visual Studio 2010做编译器,发现站内还没有基础的关于用VS2010编译程序的教材.而且自己在网上寻找时候,教程难找,而且大都不详细.故写一个关于这方面的教程 ...
- mysql、添加和删除用户、添加权限
创建用户 mysql>insert into mysql.user(Host,User,Password) values("localhost","tes ...
- Ubuntu 系统 文件操作命令
文件和目录的操作 用户主目录下有一个 Desktop (对应,桌面)mkdir dir1 建立一个目录cd 不添加参数,默认回到主目录(用户目录)touch a.txt 建立一个文件mv a.txt ...
- IoC容器Autofac正篇之解析获取(五)
解析获取的方式有如下几种: Resolve class Program { static void Main(string[] args) { var builder = new ContainerB ...