HDU-5805-NanoApe Loves Sequence(水题)
2016-08-08 21:30
288 查看
链接:http://acm.hdu.edu.cn/showproblem.php?pid=5805
题意:给出一个数组,求去掉1个数字后相邻两数字差的最大值的期望*n,
题解:就是求去掉每个数字后相邻两数差最大值的和,笨笨的维护下前三大值就好;
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e5+7;
int Scan()
{
int res=0,ch,flag=0;
if((ch=getchar())=='-')flag=1;
else if(ch>='0'&&ch<='9')res=ch-'0';
while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-'0';
return flag?-res:res;
}
void Out(int a)
{
if(a>9)Out(a/10);
putchar(a%10+'0');
}
int a[maxn];
int main()
{
int T;
scanf("%d",&T);
int n,m;
// long long ans=0;
while(T--)
{
int Max=0,Max2=0,Max3=0;
scanf("%d",&n);
// int c=0;
for(int i=0; i<n; ++i)
{
scanf("%d",&a[i]);
if(i>0)
{
int p=abs(a[i]-a[i-1]);
if(p>Max)
{
Max3=Max2;
Max2=Max;
Max=p;
// c=0;
}
else if(p>Max2)
{
Max3=Max2;
Max2=p;
}
else if(p>Max3)
{
Max3=p;
}
// if(p=Max)c++;
}
}
// cout<<Max<<" "<<Max2<<" "<<Max3<<endl;
long long ans=0;
if(abs(a[1]-a[0])==Max && Max2!=Max)ans+=Max2;
else ans+=Max;
if(abs(a[n-1]-a[n-2])==Max && Max2!=Max)ans+=Max2;
else ans+=Max;
for(int i=1; i<n-1; ++i)
{
int x=abs(a[i+1]-a[i]);
int y=abs(a[i]-a[i-1]);
int z=abs(a[i+1]-a[i-1]);
if(x<y)swap(x,y);
if(z>=Max)
{
ans+=z;
}
else if(x==Max && y==Max2)
{
ans+=max(Max3,z);
}
else if(x==Max)
{
ans+=max(Max2,z);
}
else
{
ans+=Max;
}
}
cout<<ans<<endl;
}
}
题意:给出一个数组,求去掉1个数字后相邻两数字差的最大值的期望*n,
题解:就是求去掉每个数字后相邻两数差最大值的和,笨笨的维护下前三大值就好;
#include <iostream>
#include <cstring>
#include <cstdio>
#include <algorithm>
using namespace std;
const int maxn = 1e5+7;
int Scan()
{
int res=0,ch,flag=0;
if((ch=getchar())=='-')flag=1;
else if(ch>='0'&&ch<='9')res=ch-'0';
while((ch=getchar())>='0'&&ch<='9')res=res*10+ch-'0';
return flag?-res:res;
}
void Out(int a)
{
if(a>9)Out(a/10);
putchar(a%10+'0');
}
int a[maxn];
int main()
{
int T;
scanf("%d",&T);
int n,m;
// long long ans=0;
while(T--)
{
int Max=0,Max2=0,Max3=0;
scanf("%d",&n);
// int c=0;
for(int i=0; i<n; ++i)
{
scanf("%d",&a[i]);
if(i>0)
{
int p=abs(a[i]-a[i-1]);
if(p>Max)
{
Max3=Max2;
Max2=Max;
Max=p;
// c=0;
}
else if(p>Max2)
{
Max3=Max2;
Max2=p;
}
else if(p>Max3)
{
Max3=p;
}
// if(p=Max)c++;
}
}
// cout<<Max<<" "<<Max2<<" "<<Max3<<endl;
long long ans=0;
if(abs(a[1]-a[0])==Max && Max2!=Max)ans+=Max2;
else ans+=Max;
if(abs(a[n-1]-a[n-2])==Max && Max2!=Max)ans+=Max2;
else ans+=Max;
for(int i=1; i<n-1; ++i)
{
int x=abs(a[i+1]-a[i]);
int y=abs(a[i]-a[i-1]);
int z=abs(a[i+1]-a[i-1]);
if(x<y)swap(x,y);
if(z>=Max)
{
ans+=z;
}
else if(x==Max && y==Max2)
{
ans+=max(Max3,z);
}
else if(x==Max)
{
ans+=max(Max2,z);
}
else
{
ans+=Max;
}
}
cout<<ans<<endl;
}
}
相关文章推荐
- hdu 5805 NanoApe Loves Sequence (水题)
- HDU 5805:NanoApe Loves Sequence
- HDU-5806-NanoApe Loves Sequence Ⅱ(水题)
- hdu 5805 NanoApe Loves Sequence(简单思路题)
- (模拟/线段树)HDU - 5805 NanoApe Loves Sequence
- HDU 5805 NanoApe Loves Sequence
- hdu:5805:前缀和后缀NanoApe Loves Sequence
- HDU 5805 NanoApe Loves Sequence(思维)
- BestCoder Round #86 1002 &HDU 5805 ——NanoApe Loves Sequence
- HDU 5805 NanoApe Loves Sequence 线段树
- HDU 5805 NanoApe Loves Sequence
- HDU 5805 NanoApe Loves Sequence (BC #86)
- 【HDU】5805 - NanoApe Loves Sequence(模拟)
- HDU 5805 NanoApe Loves Sequence(水~)
- HDU 5805 - NanoApe Loves Sequence
- HDU 5805 - NanoApe Loves Sequence (BestCoder Round #86)
- HDU 5805 NanoApe Loves Sequence(ST 表 or 预处理)
- HDU 5805 NanoApe Loves Sequence
- HDU 5805 NanoApe Loves Sequence(水模拟)
- hdu-5805 NanoApe Loves Sequence(线段树+概率期望)