当前位置:网站首页>HDU-5805-NanoApe Loves Sequence(思维题)
HDU-5805-NanoApe Loves Sequence(思维题)
2022-07-28 05:28:00 【__Simon】
NanoApe Loves Sequence
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others)Total Submission(s): 1087 Accepted Submission(s): 448
In math class, NanoApe picked up sequences once again. He wrote down a sequence with n numbers on the paper and then randomly deleted a number in the sequence. After that, he calculated the maximum absolute value of the difference of each two adjacent remained numbers, denoted as F.
Now he wants to know the expected value of F, if he deleted each number with equal probability.
In each test case, the first line of the input contains an integer n, denoting the length of the original sequence.
The second line of the input contains n integers A1,A2,...,An, denoting the elements of the sequence.
1≤T≤10, 3≤n≤100000, 1≤Ai≤109
In order to prevent using float number, you should print the answer multiplied by n.
1 4 1 2 3 4
6
/**
* @Date: 2016-07-21 10-41-21
* @Project: ACM
* @Last modified time: 2016-08-08 01-53-22
*/
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
using namespace std;
#define maxn 100005
int n, m;
long long sum;
long long L[maxn], R[maxn];
long long a[100004];
int main () {
int t;
scanf ("%d", &t);
while (t--) {
scanf ("%d", &n);
for (int i = 1; i <= n; i++) scanf ("%lld", &a[i]);
sum = 0;
//printf("==%d==%d\n",L[1],R[n]);
L[1] = -1, R[n] = -1;//左右两端赋足够小的初值
/**
* 预处理,以将要被删的数为基准,往两边作预处理
*/
for (int i = 2; i <= n; i++) { //往左预处理,使左侧最大差的绝对值为L[i]
L[i] = max (L[i-1], abs (a[i]-a[i-1]));
}
for (int i = n-1; i >= 1; i--) { //往右预处理,使右侧最大差的绝对值为R[i]
R[i] = max (R[i+1], abs (a[i]-a[i+1]));
}
/**
* 当删去两端的数时需特殊处理,取得最大值
* 当删去中间的数时,需考虑删去前该数与左右相邻数的差的绝对值,且产生了一个新的差值。需讨论处理
*/
for (int i = 1; i <= n; i++) {
if (i == 1) sum += R[2]; //当删去第一个数时,需往右考虑,此时R[2]为最大差值的绝对值
else if (i == n) sum += L[n-1];//当删去最后一个数时,需往左考虑,此时L[n-1]是最大差值的绝对值
//删去中间的数时,先比较删去前该数与左右两侧数的差绝对值,取较大值,再与产生的新的差绝对值比较,取最大值
else sum += max (max (L[i-1], R[i+1]), abs (a[i+1]-a[i-1]));
}
printf ("%lld\n", sum);//求和,即期望*n的结果
}
return 0;
}边栏推荐
- Battle plague Cup -- my account book
- 网络通信及TCP/IP协议
- PKU-2524-Ubiquitous Religions(并查集模板)
- elastic常用高频命令
- ---栈&队列---
- Implementation of simple address book in [c language]
- [dynamic planning -- the best period for buying and selling stocks series 3]
- js 变量等于0也等也' '问题
- Graphic pipeline foundation (II)
- Explain in detail
猜你喜欢

关于Shader KeyWord的整理

explain详解

Lancher deployment practice

Leetcode skimming diary sword finger offer II 050. sum of downward path nodes

Source code analysis of countdownlatch of AQS

prometheus监控nacos

Bug experience related to IAP jump of stm32

图形管线基础(一)

Yapi vulnerability hanging horse program chongfu.sh processing

RayMarching实现体积光渲染
随机推荐
Brief analysis of order transaction
[dynamic planning -- the best period for buying and selling stocks series 3]
OSI七层模型
mongoDB快速入门
redis实现分布式锁思路及redission分布式锁主流程分析
js 变量等于0也等也' '问题
Graphic pipeline foundation (part outside)
@Postconstruct annotations and useful examples
Water rendering example
思寒漫谈测试人职业发展
[basic knowledge of binary tree]
Dynamic planning -- multi-step stair climbing (advanced version of stair climbing)
Yapi vulnerability hanging horse program chongfu.sh processing
RayMarching realizes volume light rendering
OJ 1089 Spring Festival travel
技术分享 | 使用 cURL 发送请求
关于Shader KeyWord的整理
Code neatness (2)
[pta ---- traversal of tree]
战疫杯--我的账本