您的位置:首页 > 产品设计 > UI/UE

NanoApe Loves Sequence-待解决

2016-08-07 10:28 281 查看

NanoApe Loves Sequence

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 262144/131072 K (Java/Others)
Total Submission(s): 440 Accepted Submission(s): 205


[align=left]Problem Description[/align]
NanoApe, the Retired Dog, has returned back to prepare for the National Higher Education Entrance Examination!

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.

[align=left]Input[/align]
The first line of the input contains an integer T

, denoting the number of test cases.

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

[align=left]Output[/align]
For each test case, print a line with one integer, denoting the answer.

In order to prevent using float number, you should print the answer multiplied by n

.

[align=left]Sample Input[/align]

1
4
1 2 3 4

[align=left]Sample Output[/align]

6

[align=left]Source[/align]
BestCoder Round #86

[align=left]Recommend[/align]
wange2014 | We have carefully selected several similar problems for you: 5808 5807 5806 5805 5804

#include <iostream>
#include <cstdio>
#include <cmath>

using namespace std;

int main()
{
int t;
int n;
int cha=0;
int cha2=0;
int a[100005]={0};
int maxx1;
int first;
int maxx2;
int second;
int maxx3;
int third;
int sum=0;
scanf("%d",&t);
for(int z=0;z<t;z++){
sum=0;
maxx1=0;
maxx2=0;
maxx3=0;
scanf("%d",&n);

for(int i=0;i<n;i++){
scanf("%d",&a[i]);
if(i!=0){
cha=abs(a[i]-a[i-1]);
if(maxx1<cha){
maxx1=cha;
first=i;
}
}
}

for(int i=1;i<n;i++){
cha=abs(a[i]-a[i-1]);
if(maxx2<cha){
if(maxx2<=maxx1){
if(i==first){
continue;
}else{
maxx2=cha;
second=i;
}
}
}
}

for(int i=1;i<n;i++){
cha=abs(a[i]-a[i-1]);
if(maxx2<cha){
if(maxx3<=maxx1&&maxx3<=maxx2){
if(i==first||i==second){
continue;
}else{
maxx3=cha;
third=i;
}
}
}
}

for(int i=1;i<n-1;i++){
cha2=abs(a[i+1]-a[i-1]);
if(maxx1<=cha2){
sum+=cha2;
}
if(maxx1>cha2){
if(i==first&&i+1==second||i==second&&i+1==first){
if(maxx3!=0){
if(maxx3>=cha2){
sum+=maxx3;
}else{
sum+=cha2;
}

}else{
sum+=cha2;
}

}
if(i==first||i==first-1){
if(cha2<=maxx2){
sum+=maxx2;
}else{
sum+=cha2;
}
}else{
sum+=maxx1;
}

}
}
if(first==1){
sum+=maxx2;
sum+=maxx1;
}
if(first==n-1){
sum+=maxx2;
sum+=maxx1;
}
if(first!=1&&first!=n-1){
sum+=(2*maxx1);
}
printf("%d\n",sum);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: