poj 2184 01背包应用
来源:互联网 发布:劲霸淘宝旗舰店 编辑:程序博客网 时间:2024/06/09 23:04
点击打开链接
#include <iostream>#include <algorithm>using namespace std;const int M =100000;const int inf=2*M;int s[M+10],f[M+10]; int dp[2*M+10]; // dp[i][j] 前i只牛的Smartness为 J时 最大的Funness // dp[i][j]= max(dp[i-1][j] ,dp[i-1][j-s[i]]+f[i]) int main(){int n;cin>>n;for(int i=1;i<=n;i++){cin>>s[i]>>f[i]; }for(int j=0;j<=2*M;j++){dp[j]=-inf; // 前0只 装不满 J 时为 -inf }dp[M]=0; // dp[M]代表 S为0的最大F 0~M负数 M~2M为正 for(int i=1;i<=n;i++){if(s[i]<0&&f[i]<0) // 都为负数肯定不选 continue; if(s[i]>=0)for(int j=2*M;j>=s[i];j--){dp[j]=max(dp[j],dp[j-s[i]]+f[i]);}else{for(int j=s[i];j<=2*M+s[i];j++) //s[i]为负数时 dp[i][j]= max(dp[i-1][j+s[i]],dp[i-1][j])->正推 //j-s[i]<=2M j<2M+s[i]{ dp[j]=max(dp[j],dp[j-s[i]]+f[i]); }}}int ans=-inf;for(int j=M;j<=2*M;j++){if(dp[j]>=0){ans=max(ans,dp[j]+j-M);}}if(ans==inf) ans=0; cout<<ans<<endl;return 0;}
0 0
- poj 2184 01背包应用
- POJ 2184 01背包
- poj 1745 Divisibility(01背包应用)
- POJ 2184 01 背包问题
- poj 2184 01背包变形
- POJ-2184-01背包变形
- poj 2184 Cow Exhibition 01背包变形,正负背包
- POJ 2184(01背包+滚动数组)
- poj 2184 Cow Exhibition(01背包)
- POJ 2184 Cow Exhibition ( 01背包变形 )
- POJ 2184 Cow Exhibition 01背包
- poj 2184 Cow Exhibition(01背包变形)
- POJ 2184 Cow Exhibition(DP:01背包)
- POJ 2184 Cow Exhibition(01背包变形)
- poj 2184 Cow Exhibition 01背包变形
- poj 2184 Cow Exhibition 【另类01背包】
- POJ--2184--Cow Exhibition--01背包
- POJ-2184-01背包变形-Cow Exhibition
- css3-3D透明照片墙
- ACCESS使用VBA编辑器,ACCESS崩溃后的处理
- webgl入门之一:概述
- HTML5之客户端存储数据
- 队列、栈
- poj 2184 01背包应用
- java实现数字螺旋矩阵
- Moving Tables
- linux系统安装jdk,tomcat
- Android搭建项目框架
- Runtime实战之定制TabBarItem大小(京东tabar实现机制)
- python连接两个字符串的另外两种高效率的方法
- Unity文件目录的读写
- 使用html和css制作水平导航栏nav