最小逆序数对——hdu1394

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

再枚举a[i]

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

记录最小

最小逆序数对——hdu1394 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);
}
}

你可能感兴趣的:(HDU)