hdu 1171 Big Event in HDU 费用可行性背包 dp
2016-02-26 14:01
495 查看
题意
一个学院分成了两个学院,于是他们要分一些公共设备。总共有n种设备,每种设备的价值
v[i]和数量
m[i],要求分配的时候尽可能的让两个学院分到的价值接近。并且保证第一个学院分得的价值不小于第二个学院。求最佳分配结果。
思路
要尽可能的平均分配,就是尽可能地用这些设备凑成总价值的一半。而只需要知道那种价值能否凑出来。code
#include <bits/stdc++.h> using namespace std; int n; int v[55], m[55]; int sum, poi; int dp[250000 + 5]; int use[250000 + 5]; int main () { while (scanf ("%d", &n) != EOF && n >= 0) { sum = 0; for (int i=1; i<=n; i++) { scanf ("%d %d", &v[i], &m[i]); sum += v[i] * m[i]; } memset(dp, 0, sizeof(dp)); dp[0] = 1; for (int i=1; i<=n; i++) { memset (use, 0, sizeof (use)); for (int j=v[i]; j<=sum/2; j++){ if (dp[j] == 0 && dp[j-v[i]] == 1 && use[j-v[i]] + 1 <= m[i]) { dp[j] = 1; use[j] = use[j-v[i]] + 1; } } } for (int i=sum/2; i>=0; i--) { if (dp[i] == 1) { poi = i; break; } } printf ("%d %d\n", sum - poi, poi); } return 0; }
相关文章推荐
- 基于Android中dp和px之间进行转换的实现代码
- Android中dip、dp、sp、pt和px的区别详解
- LFC1.0.0 版本发布
- Android px、dp、sp之间相互转换
- HP data protector软件学习1--基本角色与基本工作流程
- HP data protector软件学习2--软件组成与界面介绍
- android中像素单位dp、px、pt、sp的比较
- Android对px和dip进行尺寸转换的方法
- Android根据分辨率进行单位转换-(dp,sp转像素px)
- android 尺寸 dp,sp,px,dip,pt详解
- DP问题各种模型的状态转移方程
- HDU 1568
- HDU1290
- POJ-1695-Magazine Delivery-dp
- nyoj-1216-整理图书-dp
- TYVJ1193 括号序列解题报告
- 对DP的一点感想
- TYVJ上一些DP的解题报告
- HDU1568(Fobonacci公式)
- HDU ACM Step 2.2.2 Joseph(约瑟夫环问题)