最小逆序数对——hdu1394

先暴力统计开始时逆序数对数量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);
}
}

原文地址:https://www.cnblogs.com/huhuuu/p/2104877.html