poj2184(负权01背包)
来源:互联网 发布:桌面提醒软件 编辑:程序博客网 时间:2024/05/17 23:49
链接:点击打开链接
题意:给一些牛,每个牛有s和f两个属性,有正有负,要求选出一些牛,使得这些牛的两种属性的和最大.且这些牛的两种属性分别求和不能为负
代码:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <iostream>#include <algorithm>using namespace std;const int INF=0x3f3f3f3f;int v[105],w[105],dp[200005];int main(){ int n,i,j,ans; while(scanf("%d",&n)!=EOF){ for(i=0;i<n;i++) scanf("%d%d",&v[i],&w[i]); fill(dp,dp+200005,-INF); //保证背包必须装满 dp[100000]=0; //相当于找了一部分空间去储存负的情况 for(i=0;i<n;i++){ if(v[i]>0){ for(j=200000;j>=v[i];j--) //正的就是正常01背包 if(dp[j-v[i]]>-INF) dp[j]=max(dp[j],dp[j-v[i]]+w[i]); } else{ for(j=0;j<=200000+v[i];j++) //负的值是由大的值推出小的值 if(dp[j-v[i]]>-INF) dp[j]=max(dp[j],dp[j-v[i]]+w[i]); } } ans=-INF; for(i=100000;i<=200000;i++) if(dp[i]>=0) //两个值都必须大于等于0 ans=max(ans,i-100000+dp[i]); printf("%d\n",ans); } return 0;}
1 0
- poj2184(负权01背包)
- poj2184 负容量01背包
- poj2184 Cow Exthibition花费为负的01背包
- poj2184(01背包变形)
- 01背包 poj2184
- poj2184(变形01背包)
- 【POJ2184】Cow Exhibition 01背包
- POJ2184 Cow Exhibition 【01背包】
- 01背包变形(poj2184)
- poj2184(01背包变形)
- 背包 poj2184
- poj2184-01背包变形(正负背包)
- poj2184 Cow Exhibition 01背包 变形
- POJ2184------带负值的01背包
- POJ2184:Cow Exhibition(变种01背包)
- POJ2184---Cow Exhibition(01背包变形)
- poj2184 Cow Exhibition(01背包+变化)
- POJ2184:Cow Exhibition(类01背包)
- 浅谈 -webkit-tap-highlight-color 属性
- ubuntu如何访问windows共享文件夹
- JavaScript对象数组表格处理加案例
- C++使用oracle的occi库操作oracle数据库
- 斐波那契数列
- poj2184(负权01背包)
- 蓝桥杯--格子中输出
- VMware Workstation 系统备份-虚拟机克隆方法
- getActivity().runOnUiThread多次执行报NullPointerException
- JQuery表单验证的方法和实例
- 广通软件敏捷运维分享CMDB的消费场景
- Lua中的元表与元方法
- 单实例 Oracle关闭、启动、退出命令
- 棋牌游戏软件选哪家?诺博富棋牌游戏厅