POJ 2181 Jumping Cows [贪心]

原创 2012年03月29日 20:29:06

题意: 

给定一个数字串,按奇偶顺序挑选几个数字,+奇选的数字-偶选的数字,问怎样顺序挑选使最后的和最大。


思路:

O(n)贪心。

本质上其实是在对这个串进行分割,分割成若干段,每个段里面有一个最大值,一个最小值,且最大值在最小值前面。

O(N)去遍历,先找出最大值,然后找出最小值,就算完成一个子段。

至于最后的子段肯定是只有最大值,所以只需在读取的串最后面加一个数字0即可。


#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=150005;
const int inf=(1<<30);
int n,m;
int a[N];
void solve()
{
	int flag=0;
	int mx=0,mn=inf;
	int i=1,ans=0;
	while(i<=n)
	{
		if(!flag)
		{
			if(a[i]>mx)
			{
				mx=a[i];
			}
			else
			{
				flag=1;
			}
		}
		if(flag)
		{
			if(a[i]<mn)
			{
				mn=a[i];
			}
			else
			{
				flag=0;
				ans+=(mx-mn);
				mx=0;
				mn=inf;
				continue;
			}
		}
		i++;
	}
	if(flag)
	  ans+=mx;
	printf("%d\n",ans);
}
int main()
{
	scanf("%d",&n);
	for(int i=1;i<=n;i++)
	{
		scanf("%d",a+i);
	}
	a[++n]=0;
	solve();
	return 0;
}


poj 2181 Jumping Cows 贪心

题意: 求一个序列的子序列 这个子序列的偶次项取相反数 问最大的子序列和 分析: 把每个数按其大小为y坐标那么可以得到一个类似波浪的图形,那么每次我们加上波峰减去波谷就是最优解 ACcode:...
  • zp___waj
  • zp___waj
  • 2017年04月19日 20:45
  • 149

poj 2181 Jumping Cows

直接上代码#include #include #include #include #include #include #include #include #define MAXSIZE 100 us...
  • u013486906
  • u013486906
  • 2015年07月08日 23:39
  • 238

POJ 2181 Jumping Cows

给你n个药的序列,牛从时间1开始吃药,在奇数时间吃药可以增加弹跳力,在偶数时间吃药则会减少弹跳力。在某一时间,你可以跳过一些药,但一旦吃过某种药,你就不能在选前面的药了。问你某一个吃药的序列,使牛最终...
  • sssogs
  • sssogs
  • 2013年01月08日 01:02
  • 710

POJ 2181 JUMPING COWS(DP)

原文:http://blog.acmj1991.com/?p=611 题意:给你一些数,让你找出一个子序列,子序列计算的规则是:奇数位相加偶数位相减。要求这个子序列计算的值最大为多少 思路:开始是...
  • acmj1991
  • acmj1991
  • 2011年08月19日 20:01
  • 349

poj 2181 Jumping Cows DP

题意:一群牛的初始跳跃高度为0,一些药能提高它们的跳跃能力,奇数次服用药是提高跳跃能力,偶数次降低,求最高高度 思路:见注释 #include using namespace std; c...
  • deng_yu
  • deng_yu
  • 2011年08月17日 14:29
  • 97

2181 Jumping Cows 解题报告

Memory:  304KTime: 94MSLanguage: G++Faults: 0Algorithm: dp/* 这应该也算是dp吧 记录上次odd time的取值 和 even time 的...
  • suikay
  • suikay
  • 2009年03月04日 11:37
  • 228

2181 Jumping Cows

Jumping CowsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 4046 Accepted: 2417Description...
  • kongming_acm
  • kongming_acm
  • 2010年07月14日 16:03
  • 328

poj 2181 Jumping Cows 【简单DP】

//dp[i][0]=max(dp[i-1][1]-a[i],dp[i-1][0]); //dp[i][1]=max(dp[i-1][0]+a[i],dp[i-1][1]); #include #in...
  • wxfwxf328
  • wxfwxf328
  • 2012年01月28日 19:20
  • 362

POJ 2181-Jumping Cows

题目: http://poj.org/problem?id=2181 大意: 给你n个数,让你找出一个子序列,子序列计算的规则是:奇数次运算则加上这个数,偶数次运算就减去这个数。 求这个子...
  • niushuai666
  • niushuai666
  • 2011年08月12日 16:32
  • 1687

Jumping Cows

PKU.2181DescriptionFarmer Johns cows would like to jump over the moon, just like the cows in their f...
  • yahreso
  • yahreso
  • 2008年03月21日 12:36
  • 732
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:POJ 2181 Jumping Cows [贪心]
举报原因:
原因补充:

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