POJ 2184 Cow Exhibition [dp 背包]

原创 2012年03月27日 21:31:45

题意:

给定两串数字,有正有服,求出最大和,且这个和的状态下满足任一边都不为负。


思路:

dp。

说是背包,但是其实完全不懂背包的也可以做出来。

本质就是用dp数组来记录状态,然后依次增加状态和更新而已。。

值得注意的就是对负值平移成非负的。


linux环境下vim编辑器a掉的第二道题,很艰难,没少gdb。

强烈意识到要开始改装一下vim成ide了,利其器。

#include<iostream>
#include<stdio.h>
#include<string.h>
#include<algorithm>
#define Max(a,b) ((a)>(b)?(a):(b))
#define Min(a,b) ((a)<(b)?(a):(b))
using namespace std;
const int N=105;
const int ost=100000;
const int inf=(1<<30);
int n,m;
int d[2*ost+5];
struct Node
{
	int s,f;
}a[N];
void solve()
{
	memset(d,0,sizeof(d));
	d[ost]=ost;
	int l=ost,r=ost;
	for(int i=1;i<=n;i++)
	{
		int s=a[i].s;
		int f=a[i].f;
		if(s>0)
		{
			for(int j=r;j>=l;j--)
			{
				if(d[j])
				{
					d[j+s]=Max(d[j]+f,d[j+s]);
					r=Max(r,j+s);
				}
			}
		}
		else
		{
			for(int j=l;j<=r;j++)
			{
				if(d[j])
				{
					d[j+s]=Max(d[j]+f,d[j+s]);
					l=Min(j+s,l);
				}
			}
		}
	}
	int ans=0;
	for(int i=ost;i<=r;i++)
	  if(d[i]&&d[i]>=ost)
	  {
		ans=Max(ans,d[i]+i-2*ost);
	  }
	printf("%d\n",ans);
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d%d",&a[i].s,&a[i].f);
	}
	solve();
	return 0;
}


相关文章推荐

POJ2184 Cow Exhibition(DP:变种01背包)

题意: 一群奶牛分别有s和f两个值,要求选出一些奶牛使s与f的和最大并且s和f分别的和不能为负数。 要点: 用dp[i]=j表示当s的和为i时f的和为j,这样最后只要求dp[i]+i的最大值即可。注意...

[POJ 2184]Cow Exhibition[DP][01背包]

题目链接:[POJ 2184]Cow Exhibition[DP][01背包] 题意分析: 有n头牛,每头牛的智商为si,情商为fi,现在要举办一个展览,需要选择一些牛出来,满足这些牛的情商只和不...

POJ 2184 Cow Exhibition(变形01背包)

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

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
  • 533

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 [dp 背包]
举报原因:
原因补充:

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