【CodeForces - 789C】Functions again(最大子段和变形,dp,思维)

题干:

Something happened in Uzhlyandia again... There are riots on the streets... Famous Uzhlyandian superheroes Shean the Sheep and Stas the Giraffe were called in order to save the situation. Upon the arriving, they found that citizens are worried about maximum values of the Main Uzhlyandian Function f, which is defined as follows:

In the above formula, 1 ≤ l < r ≤ n must hold, where n is the size of the Main Uzhlyandian Array a, and |x| means absolute value of x. But the heroes skipped their math lessons in school, so they asked you for help. Help them calculate the maximum value of f among all possible values of l and r for the given array a.

Input

The first line contains single integer n (2 ≤ n ≤ 105) — the size of the array a.

The second line contains n integers a1, a2, ..., an (-109 ≤ ai ≤ 109) — the array elements.

Output

Print the only integer — the maximum value of f.

Examples

Input

5
1 4 2 3 1

Output

3

Input

4
1 5 4 7

Output

6

Note

In the first sample case, the optimal value of f is reached on intervals [1, 2] and [2, 5].

In the second case maximal value of f is reachable only on the whole array.

题目大意:

第一行包含一个整数 n (2 ≤ n ≤ 105) — 表示数组 a的大小。

第二行包含 n 个整数 a1, a2, ..., an (-109 ≤ ai ≤ 109) — 表示数组。

让你找一段连续区间[l,r],使得a[l]-a[l+1]+a[l+2]-a[l+3]....a[r]最大。

解题报告:

直接dp。分以奇数为结尾和偶数为结尾两种情况分别讨论一下即可,其实这题不用set,因为只需要最大值和最小值,所以可以直接维护前缀最大值最小值即可。

AC代码:

#include<cstdio>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#include<map>
#include<vector>
#include<set>
#include<string>
#include<cmath>
#include<cstring>
#define FF first
#define SS second
#define ll long long
#define pb push_back
#define pm make_pair
using namespace std;
typedef pair<int,int> PII;
const int MAX = 2e5 + 5;
int n;
ll a[MAX],b[MAX],sum[MAX],ans=-1e18;
set<ll> ss[2];
int main()
{cin>>n;for(int i = 1; i<=n; i++) scanf("%lld",a+i);for(int i = 1; i<n; i++) {b[i] = abs(a[i]-a[i+1]);if(i%2 == 0) b[i] = -b[i];sum[i] = sum[i-1] + b[i];ans=max(ans,abs(b[i]));}ss[0].insert(0);ss[1].insert(0);for(int i = 1; i<n; i++) {if(i%2==0) {//还是得分情况,,,不知道自己在写什么if(ss[i%2].size()) ans = max(ans,sum[i] - *ss[(i%2)].begin());if(ss[!(i%2)].size()) ans = max(ans,-sum[i] + *ss[!(i%2)].rbegin());	}else {if(ss[i%2].size()) ans = max(ans,-sum[i] + *ss[(i%2)].rbegin());if(ss[!(i%2)].size()) ans = max(ans,sum[i] - *ss[!(i%2)].begin());}  ss[i%2].insert(sum[i]);}cout << ans << endl;return 0 ;
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/439599.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一步步编写操作系统 55 CPL和DPL入门2

接上节。 图中第132行的jmp指令&#xff0c;段选择子为SELECTOR_CODE&#xff0c;其RPL的值为RPL0&#xff0c;RPL0定义在include/boot.inc中&#xff0c;其值为0。选择子的索引部分值为1&#xff0c;表示对应GDT中第1个段描述符&#xff0c;该描述符的DPL为0&#xff0c;&…

详解停车位检测算法 Vision-Based Parking-Slot Detection: A DCNN-Based Approach and a Large-Scale Benchmark

本文介绍一篇基于深度学习的停车位检测论文&#xff1a;DeepPS&#xff0c;作者同时公开了数据集ps2.0&#xff0c;工作很扎实&#xff0c;对于入门停车位检测很有帮助&#xff0c;论文发表在 IEEE T-IP 2018。 项目链接为&#xff1a;https://cslinzhang.github.io/deepps/ 0…

Monitor(管程)是什么意思?Java中Monitor(管程)的介绍

本篇文章给大家带来的内容是关于Monitor&#xff08;管程&#xff09;是什么意思&#xff1f;Java中Monitor&#xff08;管程&#xff09;的介绍&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。 monitor的概念 管程&#x…

详解经典GPS辅助惯性导航论文 A GPS-aided Inertial Navigation System in Direct Configuration

本文介绍一篇 IMU 和 GPS 融合的惯性导航论文&#xff0c;重点是理解本文提出的&#xff1a;Dynamical constraints update、Roll and pitch updates 和 Position and heading updates。 论文链接为&#xff1a;https://www.sciencedirect.com/science/article/pii/S166564231…

详解停车位检测论文:Attentional Graph Neural Network for Parking-slot Detection

本文介绍一篇注意力图神经网络用于停车位检测论文&#xff0c;论文已收录于 RA-L2021。在之前的基于卷积神经网络的停车位检测方法中&#xff0c;很少考虑停车位标记点之间的关联信息&#xff0c;从而导致需要复杂的后处理。在本文中&#xff0c;作者将环视图中的标记点看作图结…

详解3D物体检测模型 SPG: Unsupervised Domain Adaptation for 3D Object Detection via Semantic Point Generation

本文对基于激光雷达的无监督域自适应3D物体检测进行了研究&#xff0c;论文已收录于 ICCV2021。 在Waymo Domain Adaptation dataset上&#xff0c;作者发现点云质量的下降是3D物件检测器性能下降的主要原因。因此论文提出了Semantic Point Generation (SPG)方法&#xff0c;首…

Waymo研发经理:《自动驾驶感知前沿技术介绍》

Waymo研发经理|自动驾驶感知前沿技术介绍这是Waymo研发经理&#xff08;VoxelNet作者&#xff09;的一个最新分享报告&#xff1a;《自动驾驶感知前沿技术介绍》。在这份报告里&#xff0c;介绍了Waymo在自动驾驶感知中五个研究方向的最新成果。 1. Overview of the autonomous…

几种常见软件过程模型的比较

瀑布模型 瀑布模型&#xff08;经典生命周期&#xff09;提出了软件开发的系统化的、顺序的方法。其流 程从用户需求规格说明开始&#xff0c;通过策划、建模、构建和部署的过程&#xff0c;最终提供一 个完整的软件并提供持续的技术支持。 优点&#xff1a; 1. 强调开发的…

两篇基于语义地图的视觉定位方案:AVP-SLAM和RoadMap

本文介绍两篇使用语义地图进行视觉定位的论文&#xff0c;两篇论文工程性很强&#xff0c;值得一学。 AVP-SLAM是一篇关于自动泊车的视觉定位方案&#xff0c;收录于 IROS 2020。论文链接为&#xff1a;https://arxiv.org/abs/2007.01813&#xff0c;视频链接为&#xff1a;ht…

【51Nod - 1270】数组的最大代价(dp,思维)

题干&#xff1a; 数组A包含N个元素A1, A2......AN。数组B包含N个元素B1, B2......BN。并且数组A中的每一个元素Ai&#xff0c;都满足1 < Ai < Bi。数组A的代价定义如下&#xff1a; &#xff08;公式表示所有两个相邻元素的差的绝对值之和&#xff09; 给出数组B&…

一步步编写操作系统 56 门、调用门与RPL序 1

小弟多次想把调用门和RPL分开单独说&#xff0c;但几次尝试都没有成功&#xff0c;我发现它们之间是紧偶合、密不可分&#xff0c;RPL的产生主要是为解决系统调用时的“越权”问题&#xff0c;系统调用的实现方式中&#xff0c;以调用门和中断门最为适合。由于以后我们将用中断…

自动驾驶纯视觉3D物体检测算法

视频链接&#xff1a;https://www.shenlanxueyuan.com/open/course/112 这是Pseudo-LiDAR作者最近做的一个分享报告&#xff1a;《Pseudo-LiDAR&#xff1a;基于相机的3D物体检测算法》。在这份报告里&#xff0c;作者主要介绍了博士期间的研究成果&#xff1a;基于深度学习的…

一步步编写操作系统 57 门、调用门与RPL序 2

接上文&#xff1a; 提供了4种门的原因是&#xff0c;它们都有各自的应用环境&#xff0c;但它们都是用来实现从低特权级的代码段转向高特权级的代码段&#xff0c;咱们这里也只讨论有关特权级的功用&#xff1a; 1.调用门 call和jmp指令后接调用门选择子为参数&#xff0c;以…

Coursera自动驾驶课程第15讲:GNSS and INS Sensing for Pose Estimation

在上一讲《Coursera自动驾驶课程第14讲&#xff1a;Linear and Nonlinear Kalman Filters》 我们学习了卡尔曼滤波相关知识&#xff0c;包括&#xff1a;线性卡尔曼滤波&#xff08;KF&#xff09;、扩展卡尔曼滤波&#xff08;EKF&#xff09;、误差卡尔曼滤波&#xff08;ES-…

详解车道线检测数据集和模型 VIL-100: A New Dataset and A Baseline Model for Video Instance Lane Detection

本文介绍一个新的车道线数据集 VIL-100 和检测模型 MMA-Net&#xff0c;论文已收录于 ICCV2021&#xff0c;重点是理解本文提出的 LGMA 模块&#xff0c;用于聚合局部和全局记忆特征。 论文链接&#xff1a;https://arxiv.org/abs/2108.08482 项目链接&#xff1a;https://gi…

七天入门图像分割(1):图像分割综述

最近在研究自动驾驶视觉语义地图构建&#xff0c;因为要使用到语义分割技术&#xff0c;趁此机会学习了百度飞桨的图像分割课程&#xff0c;课程蛮好的&#xff0c;收获也蛮大的。 课程地址&#xff1a;https://aistudio.baidu.com/aistudio/course/introduce/1767 1. 课程简要…

一步步编写操作系统 59 cpu的IO特权级1

在保护模式下&#xff0c;处理器中的“阶级”不仅体现在数据和代码的访问&#xff0c;还体现在指令中。 一方面将指令分级的原因是&#xff0c;有些指令的执行对计算机有着严重的影响&#xff0c;它们只有在0特权级下被执行&#xff0c;因此被称为特权指令&#xff08;Privile…

重读经典:《ImageNet Classification with Deep Convolutional Neural Networks》

9年后重读深度学习奠基作之一&#xff1a;AlexNet【下】【论文精读】这两天偶然间在B站看了李沐博士对AlexNet论文的重新解读&#xff0c;收获满满。AlexNet是当今深度学习浪潮奠基作之一&#xff0c;发表在2012年。在视频中&#xff0c;李沐博士主要是分享了他的三步法快速读论…

一步步编写操作系统 60 cpu的IO特权级2 什么是驱动程序

用户程序可以在由操作系统加载时通过指定整个eflags设置&#xff0c;操作系统如何设置自己的IOPL呢&#xff0c;即使内核IOPL为0也得写进去eflags寄存器中才生效。可惜的是&#xff0c;没有直接读写eflags寄存器的指令&#xff0c;不过可以通过将栈中数据弹出到eflags寄存器中来…

详解惯性导航论文 RINS-W: Robust Inertial Navigation System on Wheels

本文介绍一篇惯性导航定位论文 RINS-W&#xff0c;论文发表于 IROS2019。在本论文中作者提出了仅使用一个IMU进行长时间惯性导航的方法。方法主要包括两个部分&#xff1a; 检测器使用循环神经网络来检测IMU的运动状况&#xff0c;如零速或零横向滑移&#xff1b;使用Invarian…