【t046】牛跳
Time Limit: 1 second 
Memory Limit: 128 MB
【问题描述】
John的奶牛们计划要跳到月亮上去。它们请魔法师配制了P(1 <= P <=150,000)种药水,这些药水必需安原来的先后次序使用, 
但中间可以跳过一些药水不吃。每种药水有一个“强度”值 s ( 1 <= s <= 500 ),表示可以增强牛的跳跃能力。然而,药力的 
作用却是交替相反方向起作用,也就是说:当第奇数次吃药时,牛获得跳的更高的能力,而第偶数吃药时,却降低了跳高能力 
。在吃药前,牛的跳高能力当然为 0 。 
每种药只能吃一次,开始时为第1次吃药。 
请求出牛可能跳到的最高高度--最大跳跃能力。 
【输入格式】
第一行:一个整数 P 
下面P行:每行一个整数,表示按先后次序要吃的药水的“强度”。
【输出格式】
只一个整数,表示最大弹跳能力。 
去掉第2、4两种药水, 
样例处理方式: 
吃药为: 
7,1,8,3,6; 
最终能力为: 
7-1+8-3+6=17
Sample Input
8 
7 
2 
1 
8 
4 
3 
5 
6
Sample Output
17
【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t046
【题意】
【题解】 
 
设fij表示前i个药水中选择了奇偶性为j的个数的药的最大跳跃值。 
0和1分别表示偶数和奇数 
对于第i个药水,有选择它和不选两种结果。 
选它的话,和前i-1个的奇偶性不同,不选它的,则一样。
        //选
        f[i][0] = f[i-1][1]-a[i];
        f[i][1] = f[i-1][0]+a[i];
        //不选
        f[i][0] = max(f[i][0],f[i-1][0]);
        f[i][1] = max(f[i][1],f[i-1][1]);
        //边界
        f[1][0] = 0;//表示不选第一个
        f[1][1] = h[1];//选第一个,变成奇数搞出奇偶性为奇数和偶数的最大值就好。 
第i个选择完之后,它选与不选只会对前i个造成影响。只要他做出了正确的选择,对后续就不会产生影响。 
 
【完整代码】
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define rei(x) scanf("%d",&x)
#define rel(x) scanf("%lld",&x)
#define ref(x) scanf("%lf",&x)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 15e4+100;
int n;
int a[N],f[N][2];
void in()
{
    rei(n);
    rep1(i,1,n)
        rei(a[i]);
}
void do_dp()
{
    f[1][0] = 0;
    f[1][1] = a[1];
    rep1(i,2,n)
    {
        //选
        f[i][0] = f[i-1][1]-a[i];
        f[i][1] = f[i-1][0]+a[i];
        //不选
        f[i][0] = max(f[i][0],f[i-1][0]);
        f[i][1] = max(f[i][1],f[i-1][1]);
    }
}
void o()
{
    printf("%d\n",max(f[n][0],f[n][1]));
}
int main()
{
    //freopen("F:\\rush.txt","r",stdin);
    in();
    do_dp();
    o();
    return 0;
}【t046】牛跳的更多相关文章
- 【noip模拟赛2】牛跳
		描述 John的奶牛们计划要跳到月亮上去.它们请魔法师配制了P(1 <= P <=150,000)种药水,这些药水必需安原来的先后次序使用,但中间可以跳过一些药水不吃.每种药水有一个“强度 ... 
- Divide and Conquer:River Hopscotch(POJ 3258)
		去掉石头 题目大意:一群牛在河上的石头上跳来跳去,现在问你如何通过去掉M个石头,使得牛跳过石头的最短距离变得最大? 这一题比较经典,分治法的经典,二分法可以很方便处理这个问题,我们只要明白比较函数这 ... 
- Enum:Hopscotch(POJ 3050)
		跳格子 题目大意:牛像我们一样跳格子,一个5*5的方格,方格有数字,给牛跳5次,可以组成一个6个数字组合字符串,请问能组合多少个字符串? 题目规模很小,暴力枚举,然后用map这个玩具来检测存不存在就可 ... 
- 《挑战程序设计竞赛》2.1 穷竭搜索 POJ2718 POJ3187 POJ3050 AOJ0525
		POJ2718 Smallest Difference Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6509 Acce ... 
- 2019中山纪念中学夏令营-Day2[JZOJ]
		博客的开始,先聊聊代码实现: 每次比赛以后,要有归纳错误的习惯. 错误小结: 1.读入:scanf(“%c”)会读入回车和空格,但cin不会. 2.对于二维数组的输入,不能把m,n搞混了,会引起严重的 ... 
- 普及C组第二题(8.2)
		1340. [南海2009初中]jumpcow(牛跳) (Standard IO) 题目: John的奶牛们计划要跳到月亮上去.它们请魔法师配制了 P (1 <= P <=150,000) ... 
- 跳台阶 牛客网 剑指Offer
		跳台阶 牛客网 剑指Offer 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). class Solution: #ru ... 
- 牛客网-《剑指offer》-变态跳台阶
		C++ class Solution { public: int jumpFloorII(int n) { <<--n; } }; 推导: 关于本题,前提是n个台阶会有一次n阶的跳法.分析 ... 
- 牛客网 江西财经大学第二届程序设计竞赛同步赛 D.绕圈游戏-(跳青蛙游戏)找数的所有因子就可以了
		链接:https://ac.nowcoder.com/acm/contest/635/D来源:牛客网 D.绕圈游戏 433为了帮ddd提升智商,决定陪他van特殊的游戏.433给定一个带有n个点的环, ... 
随机推荐
- KDD2016,Accepted Papers
			RESEARCH TRACK PAPERS - ORAL Title & Authors NetCycle: Collective Evolution Inference in Heterog ... 
- 【JZOJ4786】【NOIP2016提高A组模拟9.17】小a的强迫症
			题目描述 输入 输出 样例输入 3 2 2 1 样例输出 3 数据范围 样例解释 解法 先假定每种颜色的珠子取一个按顺序排列. 设这n个珠子就是每一种颜色的珠子的最后一个. 考虑逐个把珠子放入. 对于 ... 
- 转:国内从事CV相关的企业
			http://blog.csdn.net/carson2005/article/details/7356225 经常碰到朋友问我国内从事计算机视觉(CV)领域的公司的发展情况,产品情况,甚至找工作等问 ... 
- MSSQL→ 03:数据库操作
			一.数据库的操作 1.1.新增 使用SSMS图形界面创建数据库 在SQL Server 2008 中,通过SQL Server Management Studio 创建数据库 使用Transact-S ... 
- python KMP算法介绍
- oracle如何加固你的数据库
			要注意以下方面 1. 修改sys, system的口令. 2. Lock,修改,删除默认用户: dbsnmp,ctxsys等. 3. 把REMOTE_OS_AUTHENT改成False,防止远程机器直 ... 
- 解决/home磁盘空间不足问题
			最近在Linux下做仿真实验,但是渐渐的发现,/home原来分配的空间不足.通过先建硬盘分区,然后挂载到/home文件的方法,在网上查了好多资料 建立分区并挂载分区http://www.se126.c ... 
- poj3261 后缀数组求重复k次可重叠的子串的最长长度
			Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 13669 Accepted: 6041 Ca ... 
- eclipse Some projects cannot be imported because they already exist in the workspace
			archive file 档案文件 删除对应的文件即可 
- COGS-2638 区间与,异或,询问max
			本篇题解参考了这个博客 题目链接 我们利用线段树来维护区间第最大值,考虑如何修改 每一次进行与操作时只有z的二进制为0的位会产生影响 每一次进行或操作时只有z的二进制为1的位会产生影响 所以只要该区间 ... 
