BestCoder Round #86 1002
2024-08-29 12:28:10
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5805
题意:删除数列中一个数,找出相邻之差绝对值最大,求依次删除最大值的和
解法:删除边缘位置的数字需要注意 它们的差就是 a[i-1]-a[i-2] ,a[i+2]-a[i+1],a[i-1]-a[i+1]的绝对值,当然,把最大的加起来就行
#include<stdio.h>
//#include<bits/stdc++.h>
#include<string.h>
#include<iostream>
#include<math.h>
#include<sstream>
#include<set>
#include<queue>
#include<map>
#include<vector>
#include<algorithm>
#include<limits.h>
#define inf 0x3fffffff
#define INF 0x3f3f3f3f
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define ULL unsigned long long
using namespace std;
long long n,m;
long long a[100005];
long long q,p;
long long b[100005],e[100005],c[100005];
long long sum=0;
int t;
long long MAXN1,MAXN2;
int main()
{
scanf("%d",&t);
while(t--)
{
sum=0;
memset(b,0,sizeof(b));
memset(c,0,sizeof(c));
memset(e,0,sizeof(e));
scanf("%d",&n);
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
}
MAXN1=0;
MAXN2=0;
for(int i=3; i<=n; i++)
{
MAXN1=max(MAXN1,abs(a[i-2]-a[i-1]));
c[i]=MAXN1;
}
for(int i=n-2; i>=1; i--)
{
MAXN2=max(MAXN2,abs(a[i+2]-a[i+1]));
b[i]=MAXN2;
}
for(int i=2; i<=n-1; i++)
{
e[i]=abs(a[i-1]-a[i+1]);
}
for(int i=2; i<=n-1; i++)
{
sum+=max(e[i],max(c[i],b[i]));
}
sum+=(b[1]+c[n]);
printf("%lld\n",sum);
}
return 0;
}
最新文章
- 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)
- 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法
- [IOS]JSPatch
- javascript的escape()方法
- 如何在Web项目中给没有添加API核心组件添加APIController的帮助页HelpPage
- sqlmap 1.0.21 tamper 总结
- python 练习多级菜单思路
- MFC最大化显示任务栏
- C#学习笔记之线程 - 同步上下文
- Combination Sum III —— LeetCode
- wifi智能插座 一键扫描局域网内插座Ip及其它信息 Python源代码API
- phpcms v9 万能字段使用
- 【Netty】(4)—源码AbstractBootstrap
- Python自动化编程-树莓派的介绍与使用(一)
- Python全栈开发之路 【第十六篇】:jQuey的动画效果、属性操作、文档操作、input的value
- restfull api交互常用状态码
- parallels tools 安装
- JavaScript数组学习总结
- (最长公共子序列 暴力) Common Subsequence (poj 1458)
- eclipse启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space