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】牛跳的更多相关文章

  1. 【noip模拟赛2】牛跳

    描述 John的奶牛们计划要跳到月亮上去.它们请魔法师配制了P(1 <= P <=150,000)种药水,这些药水必需安原来的先后次序使用,但中间可以跳过一些药水不吃.每种药水有一个“强度 ...

  2. Divide and Conquer:River Hopscotch(POJ 3258)

     去掉石头 题目大意:一群牛在河上的石头上跳来跳去,现在问你如何通过去掉M个石头,使得牛跳过石头的最短距离变得最大? 这一题比较经典,分治法的经典,二分法可以很方便处理这个问题,我们只要明白比较函数这 ...

  3. Enum:Hopscotch(POJ 3050)

    跳格子 题目大意:牛像我们一样跳格子,一个5*5的方格,方格有数字,给牛跳5次,可以组成一个6个数字组合字符串,请问能组合多少个字符串? 题目规模很小,暴力枚举,然后用map这个玩具来检测存不存在就可 ...

  4. 《挑战程序设计竞赛》2.1 穷竭搜索 POJ2718 POJ3187 POJ3050 AOJ0525

    POJ2718 Smallest Difference Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6509   Acce ...

  5. 2019中山纪念中学夏令营-Day2[JZOJ]

    博客的开始,先聊聊代码实现: 每次比赛以后,要有归纳错误的习惯. 错误小结: 1.读入:scanf(“%c”)会读入回车和空格,但cin不会. 2.对于二维数组的输入,不能把m,n搞混了,会引起严重的 ...

  6. 普及C组第二题(8.2)

    1340. [南海2009初中]jumpcow(牛跳) (Standard IO) 题目: John的奶牛们计划要跳到月亮上去.它们请魔法师配制了 P (1 <= P <=150,000) ...

  7. 跳台阶 牛客网 剑指Offer

    跳台阶 牛客网 剑指Offer 题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). class Solution: #ru ...

  8. 牛客网-《剑指offer》-变态跳台阶

    C++ class Solution { public: int jumpFloorII(int n) { <<--n; } }; 推导: 关于本题,前提是n个台阶会有一次n阶的跳法.分析 ...

  9. 牛客网 江西财经大学第二届程序设计竞赛同步赛 D.绕圈游戏-(跳青蛙游戏)找数的所有因子就可以了

    链接:https://ac.nowcoder.com/acm/contest/635/D来源:牛客网 D.绕圈游戏 433为了帮ddd提升智商,决定陪他van特殊的游戏.433给定一个带有n个点的环, ...

随机推荐

  1. Markdown Linux

    如何在Linux下使用Markdown进行文档工作 学习于: http://www.ituring.com.cn/article/10044 Markdown 官网: http://daringfir ...

  2. 使用JS如何消除一个数组里重复的元素

    JS: var arrData = [1,3,5,7,7,8,9,3,10,8,"sdsdsds","sss","ffff","s ...

  3. Spring boot通过JPA访问MySQL数据库

    本文展示如何通过JPA访问MySQL数据库. JPA全称Java Persistence API,即Java持久化API,它为Java开发人员提供了一种对象/关系映射工具来管理Java应用中的关系数据 ...

  4. bzoj3522 Hotel

    Description 有一个树形结构的宾馆,n个房间,n-1条无向边,每条边的长度相同,任意两个房间可以相互到达.吉丽要给他的三个妹子各开(一个)房(间).三个妹子住的房间要互不相同(否则要打起来了 ...

  5. QT 捕获事件(全局拦截)

    QT 捕获应用键盘事件(全局拦截) 主窗口只有一个QTabWidget,每个tab中嵌入相应的窗口,在使用的过程中,需要主窗口响应键盘事件,而不是tab中的控件响应.故采取以下方式. 重写QAppli ...

  6. 安装 FastAdmin 时忘记 MySQL 密码怎么办?

    安装 FastAdmin 时忘记 MySQL 密码怎么办? 给 MySQL 启动时加上 skip-grant-tables 参数,然后随便使用用户名都可以进入 MySQL. 接着就可以使用 命令改了 ...

  7. Hibernate 标签: hibernate数据库 2017-01-15 22:03 462人阅读 评论(24)

    什么是hibernate? Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,它将POJO与数据库表建立映射关系,是一个全自动的orm框架,hibernat ...

  8. TIJ——Chapter Three:Operators

    Operators 本章节比较简单,所以简单的做一些笔记: 几个要点: 1.When the compiler sees a String followed by a "+" fo ...

  9. poj 2342 hdu 1520【树形dp】

    poj 2342 给出每个顶点的happy值,还有若干组两个顶点L,K关系,表示K是L的上司.求当K.L不同时出现时获得的happy值的最大和. 设dp[u][0]表示不选u结点时获得的最大值,dp[ ...

  10. Python基础:10函数参数

    局部命名空间为各个参数值创建了一个名字,一旦函数开始执行,就能访问这个名字了. 在函数调用时,有非关键字参数和关键字参数之分,非关键字参数必须位于关键字参数之前. 在函数定义时,严格的顺序是:位置参数 ...