多重背包经典列题hdu2844coins
来源:互联网 发布:unity3d 雷达图 编辑:程序博客网 时间:2024/05/20 04:28
题目连接地址
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<iostream>#include<vector>#include<algorithm>#include<queue>using namespace std;#define LL long longconst int mn = 1100100;int dp[mn];bool vis[mn];int value[1111],num[1111];void zeroonepack(int value , int num , int sum ){ value = value * num; for(int i = sum ; i >= value ; i--)dp[i] = max(dp[i] , dp[i-value] + value);}void compeletepack(int value , int sum){ for(int i = value ; i <= sum ; i++)dp[i] = max(dp[i] , dp[i-value] + value);}void solve(int value[] , int num[] ,int n , int sum){ for(int i = 1 ; i <= n ; i++) { if(value[i] * num[i] >= sum) compeletepack(value[i],sum); else { int k = 1; while(k <= num[i]) { zeroonepack(value[i],k,sum); num[i] -= k; k *= 2; } zeroonepack(value[i],num[i] ,sum); } }}int main(){ int m,n; while(scanf("%d%d",&n,&m) && (n || m)) { for(int i = 1 ; i <= n ; i++)scanf("%d",&value[i]); for(int i = 1 ; i <= n ; i++)scanf("%d",&num[i]); for(int i = 1 ; i <= m ; i++)dp[i] = 0; dp[0] = 0; solve(value,num,n,m); int ans = 0; memset(vis,0,sizeof(vis)); for(int i = 1 ; i <= m ; i++) { if(dp[i] == i) ans++; } // for(int i = 1 ; i <= m ; i++)if(vis[i])ans++; printf("%d\n",ans); }}
- 多重背包经典列题hdu2844coins
- HDU2844Coins(多重背包)
- hdu2844Coins【多重背包】
- 【多重背包】HDU2844Coins【模板】
- 多重背包经典列题hdu1171
- Coins(经典)(多重背包)
- hdu2844Coins
- HDU2844Coins
- hdu2844 完全背包+多重背包(经典)
- 经典背包问题 01背包+完全背包+多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 经典背包问题 01背包+完全背包+多重背包
- 【置顶】经典背包讲解01背包&&完全背包&&多重背包
- 经典背包问题----(01背包、完全背包、多重背包)
- 亲爱的CSDN我又回来了,让您宽阔的臂膀见证我成长的历程
- zend studio 7.2.0怎么创建项目
- zend studio怎么打开一个已有项目
- 默默耕耘1 hadoop
- Ext.ux.itemselector 使用
- 多重背包经典列题hdu2844coins
- poj1062最贵的礼物---最短路径
- VC自定义消息的方法
- sa1
- Qt 第二章 创建对话框--纯代码实现改变形状的对话框(二)
- Oracle Transparent Data Encryption
- zend studio怎么连接mysql?
- Javascript和C#正则只保留英文、数字、汉语、空格
- zend studio如何更改字符集