链接: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;
}

  

最新文章

  1. 01.LoT.UI 前后台通用框架分解系列之——小图片背景全屏显示(可自动切换背景)
  2. 启动 Eclipse 弹出“Failed to load the JNI shared library jvm.dll”错误的解决方法
  3. [IOS]JSPatch
  4. javascript的escape()方法
  5. 如何在Web项目中给没有添加API核心组件添加APIController的帮助页HelpPage
  6. sqlmap 1.0.21 tamper 总结
  7. python 练习多级菜单思路
  8. MFC最大化显示任务栏
  9. C#学习笔记之线程 - 同步上下文
  10. Combination Sum III —— LeetCode
  11. wifi智能插座 一键扫描局域网内插座Ip及其它信息 Python源代码API
  12. phpcms v9 万能字段使用
  13. 【Netty】(4)—源码AbstractBootstrap
  14. Python自动化编程-树莓派的介绍与使用(一)
  15. Python全栈开发之路 【第十六篇】:jQuey的动画效果、属性操作、文档操作、input的value
  16. restfull api交互常用状态码
  17. parallels tools 安装
  18. JavaScript数组学习总结
  19. (最长公共子序列 暴力) Common Subsequence (poj 1458)
  20. eclipse启动tomcat出现内存溢出错误 java.lang.OutOfMemoryError: PermGen space

热门文章

  1. 【算法总结】Manacher&#39;s Algorithm
  2. 如何得到DataTable的列名
  3. 能否自己也写一个类叫做java.lang.String?
  4. 游戏中的 2D 可见性
  5. oracle--存储过程2--bk
  6. C# 利用委托和事件 传入一个参数进行进行计算并返回结果
  7. windows linux 使用python执行系统命令并将结果保存到变量
  8. 将List中部分字段转换为DataTable中
  9. 同名项目复制,发布新项目,提示已存在该项目于webapp
  10. 文件格式——Sam&amp;bam文件