codeforces - 789C 【分类+简单递推】

 1 #include <bits/stdc++.h>
 2 #define rep(i,a,b) for(int i = a;i <= b;++ i)
 3 #define per(i,a,b) for(int i = a;i >= b;-- i)
 4 #define mem(a,b) memset((a),(b),sizeof((a)))
 5 #define FIN freopen("in.txt","r",stdin)
 6 #define IO ios_base::sync_with_stdio(0),cin.tie(0)
 7 #define pb push_back
 8 #define mid ((l+r)>>1)
 9 #define ls (id<<1)
10 #define rs ((id<<1)|1)
11 using namespace std;
12 typedef long long LL;
13 typedef pair<int, LL> PIR;
14 const int N = 1e5+5;
15
16 int n;
17 LL a[N], sum1[N], sum2[N];
18
19 int main()
20 {IO;
21     //FIN;
22     cin >> n;
23     rep(i, 1, n)    cin >> a[i];
24     rep(i, 1, n-1)  sum1[i] = sum1[i-1]+abs(a[i+1]-a[i])*((i-1)&1?-1:1);
25     rep(i, 1, n-1)  sum2[i] = sum2[i-1]+abs(a[i+1]-a[i])*((i-1)&1?1:-1);
26     LL ans = -1e9, minn = 1e9;
27     rep(i, 1, n-1){
28         ans = max(ans, max(sum1[i], sum1[i]-minn));
29         minn = min(minn, sum1[i]);
30     }
31     minn = 1e9;
32     rep(i, 1, n-1){
33         ans = max(ans, max(sum2[i], sum2[i]-minn));
34         minn = min(minn, sum2[i]);
35     }
36     cout << ans << endl;
37     return 0;
38 }

时间: 2024-08-27 19:12:08

codeforces - 789C 【分类+简单递推】的相关文章

Codeforces 446C 线段树 递推Fibonacci公式

聪哥推荐的题目 区间修改和区间查询,但是此题新颖之处就在于他的区间修改不是个定值,而是从L 到 R 分别加 F1.F2....Fr-l+1 (F为斐波那契数列) 想了一下之后,觉得用fib的前缀和来解决,每次做懒惰标记记录下当前区间是从哪个L开始加起的,敲了一半之后发现有问题,就跟上次遇到的懒惰标记问题一样,这是个覆盖性的懒惰标记,每次向下传递后,都要先清除孩子的,清除孩子的也有可能要清除son's son,所以要一直pushdown下去,否则就会错,但这样就会超时. 能不能有个累加型的标记让我

hdu4165(简单递推,实则卡特兰数的应用)

这道题之前自己做的时候并没有反应过来是求卡特兰数,当时是按递推来想的.后来查了下HDU4165,结果一看大标题就说是卡特兰数,自己想了想,还真是那么回事.主要还是对于卡特兰数用的不多,也就当时没立马反应过来了.下面介绍这道题我的思路,然后对卡特兰数再做一些补充. 本题题意:罐子里有N片相同的药片,开始的时候药片都是完整的一整片.然后一个每天从中任意取一片,如果该药片是完整的一整片,那么他会吃点半片,然后将剩余半片扔回罐里,如果恰好是半片,那他直接吃掉拿出来的半片.显然2N天后,他吃完全部N片药片

hdu5306The mook jong(简单递推)

BC #50#简单递推 看了很多讲解的递推没有很懂,还好zzuspy思路简单清晰: f(n):要放n个木桩,先考虑最后一个板砖如果放的话,the last one的前两个并不能放木桩,所以前n-3个板砖如果放木桩的话有f(n-3)中方案,如果不放木桩的话,有一种方案: 最后一个板砖如果不放的话,是f(n-1)中方案: 所以f(n)=f(n-1)+f(n-3)+1; 还有一个hack点是爆Int的问题,但是比赛时并没有找到可以hack的代码T-T The mook jong Accepts: 50

(hdu step 3.1.3)母牛的故事(简单递推)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 母牛的故事 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 659 Accepted Submission(s): 481   Problem Descriptio

(hdu step 3.1.2)骨牌铺方格(简单递推:求用2*1的骨牌铺满2*n的网格的方案数)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 骨牌铺方格 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 744 Accepted Submission(s): 478   Problem Descriptio

(hdu step 3.1.1)超级楼梯(简单递推:从第1级到第m级有多少种走法,每次只能走一步或两步)

在写题解之前给自己打一下广告哈~..抱歉了,希望大家多多支持我在CSDN的视频课程,地址如下: http://edu.csdn.net/course/detail/209 题目: 超级楼梯 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 652 Accepted Submission(s): 483   Problem Description

hdu-2045 简单递推 水

题意: 一行长度为n的方格,只能使用三种颜色R.P.G来填充,且满足相邻方块不能同色,首尾方块不能同色.给出n,输出满足条件的着色方案数. 思路: 简单递推,由n-1个方块推导出n个方块的情况,有以下两种情况: 1.第n-1个方块与第1个方块不同色,满足条件.直接在n-1的满足基础上添加第n个,且第 n个只有一种选择.即F[n-1]: 2.第n-1个方块与第1个方块同色,不满足F[n-1],退至F[n-2],此时添加第n个方块时有两种选择.即F[n-2]*2. 递推公式:F[n] = F[n-1

timus 1225 flags 基础DP 简单递推

1225. Flags Time limit: 1.0 secondMemory limit: 64 MB On the Day of the Flag of Russia a shop-owner decided to decorate the show-window of his shop with textile stripes of white, blue and red colors. He wants to satisfy the following conditions: Stri

POJ 3744 Scout YYF I 简单递推

题意就是 一个人, 站在坐标为1的点处,然后每次走路有p的概率一下走出去坐标1,1-p的概率一下走出去坐标2 路上某些点(n < 10)有雷,问这个人最终迈过这些雷不被炸的概率是多大 想一下就知道这些雷之间实际上是独立不相关的 可以分段考虑 然后互相之间乘一下就行 假设有个雷在x点 现在人在坐标1 然后不踩雷就得从1点到x-1点 并且从x-1点迈出坐标2到x+1 从x-1迈出坐标2到x+1的概率是1-p 之前1到x-1这段是没有任何雷的.就可以进行普通的递推了 a_n = a_(n-1) * p