poj2184Cow Exhibition(01背包)
来源:互联网 发布:许哲 知乎 编辑:程序博客网 时间:2024/05/16 05:06
一看就是dp题,对于每头牛,只有取和不取两种情况,01背包。
设f [ i ] 表示当智商之和为 i 时情商之和最多是多少。
但智商之和有可能为负数,那么就加上一个常数。
#include<stdio.h>#include<string.h>#include<algorithm>using namespace std;#define maxn 100005struct node{int iq,eq;}edge[150];int n;int f[maxn<<1+5];int main(){while(scanf("%d",&n)!=EOF){for(int i=1;i<=n;i++){scanf("%d %d",&edge[i].iq,&edge[i].eq);}for(int i=0;i<=(maxn<<1);i++){f[i]=-maxn<<2;}f[maxn]=0;for(int i=1;i<=n;i++){if(edge[i].iq>=0)//注意体积的枚举顺序不同{for(int j=(maxn<<1)-1;j>=edge[i].iq;j--){if(f[j-edge[i].iq]>-maxn<<2){f[j]=max(f[j],f[j-edge[i].iq]+edge[i].eq);}}}else{for(int j=edge[i].iq;j-edge[i].iq<(maxn<<1);j++){if(f[j-edge[i].iq]>-maxn<<2){f[j]=max(f[j],f[j-edge[i].iq]+edge[i].eq);}}}}int ans=0;for(int i=maxn;i<(maxn<<1);i++){if(f[i]>=0){ans=max(ans,f[i]+i-maxn);}}printf("%d\n",ans);}}
0 0
- poj2184Cow Exhibition(01背包)
- poj2184Cow Exhibition【01背包 负数】
- POJ2184Cow Exhibition(01背包变形)
- POJ2184Cow Exhibition
- poj 2184 Cow Exhibition(01背包)
- poj2184 Cow Exhibition(01背包+变化)
- POJ2184:Cow Exhibition(类01背包)
- poj 2184 Cow Exhibition (01背包)
- Cow Exhibition (01 背包变形)
- POJ 2184 Cow Exhibition(01背包)
- [POJ2184]Cow Exhibition(01背包)
- 【POJ2184】Cow Exhibition 01背包
- POJ2184 Cow Exhibition 【01背包】
- POJ 2184 Cow Exhibition (dp 转换01背包)
- poj2184 Cow Exhibition(p-01背包的灵活运用)
- poj 2184 Cow Exhibition (变形的01背包)
- poj2184 Cow Exhibition(带负值的01背包)
- poj 2184 - Cow Exhibition (01背包) 解题报告
- HDU 5375(Gray code-格雷码dp)
- 计算机网络面试题1
- C代码中如何调用C++ C++中如何调用C
- 九度oj 1151
- pcap文件格式(转)
- poj2184Cow Exhibition(01背包)
- LinuxI/O端口和I/O内存的访问接口
- http头需知
- cocos2dx 玩转简单数据存储
- 代码大全2(3)
- Python读取pcap文件
- nginx之Web服务器集群-基础知识
- caffe优化算法
- JAVA问题总结之13-从键盘输入并输出