poj 2184 Cow Exhibition(01背包)

原创 2015年11月19日 21:49:52

题目链接:http://poj.org/problem?id=2184
a[i]:第i头牛smartness,b[i]:第i头牛funness.
因为题目中存在负数,第一点先消除负数的状态,看题目可知可定义shift=100000为0点。
dp[i][j]:前i头牛总smartness为j的情况下,总的smartness和funness最大的大小。
dp[i][j]=max(dp[i-1][j],dp[i-1][j-a[i]]+a[i]+b[i]);

#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=200005;
const int INF=0x3f3f3f3f;
const int N=105;
int dp[2][maxn],a[N],b[N];
int n;
int main()
{
    //freopen("in.txt","r",stdin);
    while(~scanf("%d",&n))
    {
        int maxx=0;
        int sum=n*1000;
        for(int j=0;j<2;j++)
            for(int i=100000-sum;i<=100000+sum;i++)
                dp[j][i]=-INF;
        dp[0][100000]=0;
        for(int i=1;i<=n;i++)
        {
            scanf("%d%d",&a[i],&b[i]);
            for(int j=100000+sum;j>=100000-sum;j--)
            {
                int num=(i-1)%2;
                if((dp[num][j-a[i]]!=-INF||dp[num][j]!=-INF)&&j-a[i]<=100000+sum&&j-a[i]>=100000-sum)
                {
                    dp[i%2][j]=max(dp[num][j-a[i]]+a[i]+b[i],dp[num][j]);
                    if(j>=100000&&j-100000<=dp[i%2][j])
                        maxx=max(maxx,dp[i%2][j]);
                }
            }
        }
        cout<<maxx<<endl;
    }
    return 0;
}

另外一种dp思路:http://blog.csdn.net/liuqiyao_01/article/details/8753686。(若每次都从大到小循环,dp会被自身干扰)。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

POJ 2184 Cow Exhibition(变形01背包)

题目链接: POJ 2184 Cow Exhibition 题意: 给n头牛,每头牛有两个属性:smart和fun,选出若干头牛使得这些牛的smart和fun之和最大,并且smart和与fun和...
  • Ramay7
  • Ramay7
  • 2016年04月13日 14:45
  • 153

POJ 2184 Cow Exhibition (处理负值的01背包)

【题目链接】:click here~~ 【思路】:      转化问题,求s和为某个固定值时候最大的f和值,然后遍历这些所有的s和以及对应的f和值,求出总和总和最大的那个。      那么这样就是一个...

poj 2184 - Cow Exhibition (01背包) 解题报告

Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10279  ...
  • Luwhere
  • Luwhere
  • 2015年07月31日 21:52
  • 540

POJ2184:Cow Exhibition(变种01背包)

Description "Fat and docile, big and dumb, they look so stupid, they aren't much  fun..."  - Co...

poj 2184 Cow Exhibition 【另类01背包】

Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9424   ...

POJ2184 Cow Exhibition 【01背包】

Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9383   Accepted: 3...

POJ 2184 Cow Exhibition (体积为负时01背包的处理+问题转化)

题意:有很多牛,每只牛有一个智商和幽默度,要选出一些牛,智商加幽默度总和最大,其中智商总和和幽默度总和都不能是负数。 mark:变种的01背包,可以把智商看成体积,幽默度看成价值,那么就转换成求体积...

POJ-2184-01背包变形-Cow Exhibition

Cow Exhibition Description "Fat and docile, big and dumb, they look so stupid, they aren't muc...

Poj 2184 Cow Exhibition (负费用的01背包)

题目链接:http://poj.org/problem?id=2184 题目大意:牛类想要向世人证明他们聪明又幽默。经过测试,每头牛都有一个幽默度Fi和智商Si,现要求从N头牛中选择 若干头牛去参加...

poj2184 Cow Exhibition 01背包 变形

链接:点我   题意:这是又是一道01背包的变体,题目要求选出一些牛,使smartness和funness值的和最大,而这些牛有些smartness或funness的值是负的,还要求最终的s...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 2184 Cow Exhibition(01背包)
举报原因:
原因补充:

(最多只允许输入30个字)