雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

最小逆序数对——hdu1394

Posted on 2011-07-13 08:59  huhuuu  阅读(342)  评论(0编辑  收藏  举报

先暴力统计开始时逆序数对数量add

再枚举a[i]

add=add+(n-1)-2*a[i];

记录最小

View Code
#include<stdio.h>

int a[60009];

int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
int i;
for(i=1;i<=n;i++)
{
scanf(
"%d",&a[i]);
}

int j;
int add=0;
for(i=1;i<n;i++)
{
for(j=i+1;j<=n;j++)
{
if(a[i]>a[j])
add
++;
}
}

int min=add;
for(i=1;i<n;i++)
{
add
=add+n-1-a[i]*2;
if(add<min)
min
=add;
}

printf(
"%d\n",min);
}
}