概述
1.0-n-1所以输入要加一
2.最后输出minn
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
typedef long long ffi;
const int maxn=5005;
ffi n,ans;
ffi sum[maxn<<2];
void pushup(int nd)
{
sum[nd]=sum[nd<<1]+sum[nd<<1|1];
}
void build(int l,int r,int nd)
{
if(l==r)
{
sum[nd]=0;
return;
}
int mid=(l+r)>>1;
build(l,mid,nd<<1);
build(mid+1,r,nd<<1|1);
pushup(nd);
}
void update(int pos,int l,int r,int nd)
{
if(l==r)
{
sum[nd]=1;
return;
}
int mid=(l+r)>>1;
if(pos<=mid)update(pos,l,mid,nd<<1);
else update(pos,mid+1,r,nd<<1|1);
pushup(nd);
}
ffi query(int nl,int nr,int l,int r,int nd)
{
if(nl<=l&&r<=nr)
{
return sum[nd];
}
ffi ans=0;
int mid=(l+r)>>1;
if(nl<=mid)ans+=query(nl,nr,l,mid,nd<<1);
if(nr>mid)ans+=query(nl,nr,mid+1,r,nd<<1|1);
return ans;
}
int main()
{
while(cin>>n)
{build(1,n,1);
int a[maxn];
ffi ans=0;
for(int i=1;i<=n;i++)
{cin>>a[i];
ans+=query(a[i]+1,n,1,n,1);
update(a[i]+1,1,n,1);}
int minn=ans;
for(int i=1;i<n-1;i++)
{
ans+=n-1-2*a[i];
if(minn>ans)minn=ans;
}
cout<<minn<<endl;}
}
最后
以上就是健康镜子为你收集整理的hdu1394的全部内容,希望文章能够帮你解决hdu1394所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复