hdu 1171 Big Event in HDU 费用可行性背包 dp
来源:互联网 发布:ps做淘宝宝贝详情教程 编辑:程序博客网 时间:2024/06/06 12:55
题意
一个学院分成了两个学院,于是他们要分一些公共设备。总共有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;}
0 0
- hdu 1171 Big Event in HDU 费用可行性背包 dp
- hdu 1171 Big Event in HDU(多重背包可行性)
- hdu 1171 Big Event in HDU(多重背包可行性)
- HDU 1171 Big Event in HDU (DP--01背包)
- HDU 1171 Big Event in HDU dp背包
- [HDU 1171 Big Event in HDU]背包
- hdoj 1171 Big Event in HDU(背包dp+母函数)
- hdu 1171 Big Event in HDU DP
- hdu 1171 Big Event in HDU dp
- 1171 Big Event in HDU【背包】
- Big Event in HDU 背包
- hdu 1171 Big Event in HDU(01背包&多重背包)
- hdoj 1171Big Event in HDU【dp】
- Big Event in HDU-01背包(dp思想)
- (DP,背包,只有价值)Big Event in HDU -- HDOJ
- HDU Big Event in HDU - 多重背包
- hdu 1171多重背包Big Event in HDU
- hdu 1171 Big Event in HDU 多重背包
- Mybatis Generator 配置文件详解
- iOS App 的逆向工程: Hacking on Lyft
- Android之混淆心得与亲身体验
- UVa Commando War 11729 (贪心)
- 破解ios的环境和软件
- hdu 1171 Big Event in HDU 费用可行性背包 dp
- 最大权闭合子图
- EnevtBus 发布、订阅消息--android
- 局域网象棋 Java
- 解决Ubuntu下Sublime Text 3无法输入中文
- java开发时内存溢出问题
- 软件行业里常说的“架构”
- iOS下的实际网络连接状态检测
- C语言内存四区