【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个点的环, ...
随机推荐
- windows10 中微信(UWP)版本不显示通知消息
前言: 前段时间笔者更换了升级了WINDOWS10系统,从应用商店安装微信后,使用期间不会推送消息通知,右下角的通知栏也无法添加微信图标.搜索百度和Google后,发现很多人都是这样,这是微信(UWP ...
- 如何使用Data Lake Analytics创建分区表
前言 Data Lake Analytics(后文简称DLA)提供了无服务化的大数据分析服务,帮助用户通过标准的SQL语句直接对存储在OSS.TableStore上的数据进行查询分析. 在关系型数据库 ...
- LeafLet 简单使用
Leaflet 使用 最近在Angular项目中,用到了地图,由于种种原因放弃了百度地图api使用,最后选择了leaflet,简单介绍一下. 介绍: Leaflet 是一个为移动设备设计的交互式地图的 ...
- git day01笔记 常用操作命令 快照 推送 拉取
ansible 批量在远程主机上执行命令或者脚本 git 做版本控制的一个工具 ## git操作命令: 工作区:当前编辑的区域 缓存区:add 之后的区域 本地仓库:commit之后的区域 远程仓 ...
- Resource Management in View Controllers
UIViewController生命周期 UIViewControl是IOS程序中的一个重要组成部分,扮演者一个大管家的身份,管理着程序中的众多视图,今天看看了官方文档并做了如下一些简单的记录: 何时 ...
- 集合--Collection接口详解&&迭代器
/* * 集合的顶层接口--Collection接口 * 添加 * add() * addAll() * * 遍历集合 * iterator() 迭代器 * * 删除 * remove() * rem ...
- iOS 避免循环导入及自定义控件delegate和protocol的相互引用的问题
在OC中一般来说ClassA同ClassB想要避免重复import的话两种方案 1. 若ClassA.h 头文件中已经导入了ClassB,即#import "ClassB.h" , ...
- jq 添加内容
向页面动态添加内容,一般用于动态网页,需要即时请求数据,并更新在页面上,使用append()更多一些,empty() - 清空所有子元素,remove() - 清除自身所有子元素. append() ...
- 2019-9-2-win10-uwp-右击浮出窗在点击位置
title author date CreateTime categories win10 uwp 右击浮出窗在点击位置 lindexi 2019-09-02 12:57:38 +0800 2018- ...
- 【uml】之用例图中的关系 标签: uml图形 2014-11-23 11:10 1422人阅读 评论(29)
用例图显示谁是相关的用户,用户希望系统提供什么样的服务(用例),用例之间的关系图,用例图主要的作用是获取需求.指导测试.所以,用例图是站在用户的角度来画的图,应该体现的是用户想要的功能,并不需要体现如 ...