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会被自身干扰)。

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

poj2184 Cow Exhibition 01背包 变形

链接:点我   题意:这是又是一道01背包的变体,题目要求选出一些牛,使smartness和funness值的和最大,而这些牛有些smartness或funness的值是负的,还要求最终的s...
  • liuqiyao_01
  • liuqiyao_01
  • 2013年04月02日 22:41
  • 3977

POJ2184:Cow Exhibition(变种01背包)

Description "Fat and docile, big and dumb, they look so stupid, they aren't much fun..." - Cow...
  • libin56842
  • libin56842
  • 2014年03月01日 21:44
  • 3846

POJ 2184Cow Exhibition

链接:http://poj.org/problem?id=2184      题意:有n头奶牛,每头奶牛有两个价值,si和 fi,现在要选若干牛去展览,要求能够使得TS和TF的和最大,并且TS和TF...
  • u014474324
  • u014474324
  • 2014年04月09日 14:53
  • 630

POJ 2184 Cow Exhibition 背包问题

来源:http://poj.org/problem?id=2184 题意:有一些奶牛,他们有一定的s值和f值,这些值有正有负,最后让保证s的和为非负且f的和为非负的情况下,s+f的最大值。 思路:...
  • wmn_wmn
  • wmn_wmn
  • 2012年08月14日 11:34
  • 2583

poj2184Cow Exhibition【01背包 负数】

Description "Fat and docile, big and dumb, they look so stupid, they aren't much  fun..."  - Co...
  • zhou_yujia
  • zhou_yujia
  • 2015年10月25日 15:05
  • 597

poj 2184 Cow Exhibition 01背包

Cow Exhibition Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10878   Accepted: ...
  • yskyskyer123
  • yskyskyer123
  • 2015年11月30日 18:05
  • 193

POJ 2184 Cow Exhibition 01背包

题意就是给出n对数 每对xi, yi 的值范围是-1000到1000 然后让你从中取若干对 使得sum(x[k]+y[k]) 最大并且非负   且 sum(x[k]) >= 0 sum(y[k]...
  • sdj222555
  • sdj222555
  • 2013年08月30日 20:48
  • 721

POJ 2184 Cow Exhibition 01背包

题意:有N头牛,每头牛有两个属性值:智慧Si,有趣Fi。现在要挑选牛去参加展览,希望被挑选的所有牛的Si值的和非负,Fi值的和非负,然后最大化Si和Fi的和。 思路:对于每头牛的决策只有两种,选和不选...
  • u012139398
  • u012139398
  • 2015年02月02日 20:57
  • 312

POJ 2184 Cow Exhibition(01背包)

Description 有一些奶牛,他们有一定的s值和f值,这些值有正有负,最后让保证s的和为非负且f的和为非负的情况下,s+f的最大值 Input 第一行为奶牛数量n,之后n行每行两个整数表示...
  • V5ZSQ
  • V5ZSQ
  • 2015年10月09日 20:27
  • 384

poj 2184 Cow Exhibition (01背包)

Description "Fat and docile, big and dumb, they look so stupid, they aren't much  fun..."  - Co...
  • hndu__lz
  • hndu__lz
  • 2017年02月11日 00:28
  • 70
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:poj 2184 Cow Exhibition(01背包)
举报原因:
原因补充:

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