题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394
理解了归并排序,学习了一下别人的博客,有把这个题目给敲了一遍。。。
这道题我用归并排序是我目前过的最快的算法62ms。。。当然,在我得博客里也有有线段树和树状数组求逆序数的模板;
这里我就没有离散化,还不能算是所有逆序数的模板。。。
对于归并排序不太了解的我推荐一个博客,里面有很详细的图...
分类:
编程语言 时间:
2015-08-07 11:06:05
阅读次数:
136
题目的意思就好比给出一个序列如:0 3 4 1 2设逆序数初始n = 0;由于0后面没有比它小的,n = 03后面有1,2 n = 24后面有1,2,n = 2+2 = 4;所以该序列逆序数为 4或者这样想先输0 前面没有比它大的 n = 03也没有 4也没有1前面 3 4 比它大 n += 22....
分类:
其他好文 时间:
2015-06-26 21:02:43
阅读次数:
105
http://acm.hdu.edu.cn/showproblem.php?pid=1394很基础的线段树.先查询在更新,如果后面的数比前面的数小肯定会查询到前面已经更新过的值,这时候返回的sum就是当前数的逆序数.这样查询完之后得到初始数列的逆序数,要求得所有序列的最小逆序数,还需要循环一次.设初...
分类:
其他好文 时间:
2015-06-12 18:51:58
阅读次数:
65
题目传送:Minimum Inversion Number
思路:线段树,求最小逆序数,先可以通过n*logn的时间用线段树求出初始的逆序对数,然后递推求出其他的解,递推过程看代码
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-05-13 14:49:06
阅读次数:
158
http://acm.hdu.edu.cn/showproblem.php?pid=1394
首先建立空树,将 a[i] 逐个插入
计算一个序列n排列的最小逆序数
首先用线段树算出出事序列的逆序数,然后找规律推出排列的最小逆序数。
#include
#include
#include
#include
#include
#include
#include
#include
...
分类:
其他好文 时间:
2014-12-28 14:15:04
阅读次数:
149
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1394求最小的逆序数,在此贴下逆序数的概念:在一个排列中,如果一对数的前后位置与大小顺序相反,即前面的数大于后面的数,那么它们就称为一个逆序。一个排列中逆序的总数就称为这个排列的逆序数。逆序数为偶数的排列称为...
分类:
其他好文 时间:
2014-11-20 23:30:19
阅读次数:
313
题意:就是给出一串数,当依次在将第一个数变为最后一个数的过程中,要你求它的最小逆序数。
思路:可以用树状数组和线段数做。这里我是用线段树做的。建的是一棵空树,然后每插入一个点之前,统计大于这个数的有多少个,直到所有的数都插入完成,就结果了逆序树的统计。
要得出答案主要是利用了一个结论,如果是0到n的排列,那么如果把第一个数放到最后,对于这个数列,逆序数是减少a[i],而增加n-1-a[...
分类:
其他好文 时间:
2014-08-18 18:44:42
阅读次数:
169
解题报告
题目传送门
题意:
给n个数,每次左移一位,求最小逆序数。
思路:
如果每次左移一位求一次逆序数肯定不行的。
可以知道,每次左移一位,也就是第一个数移到最后一位,逆序数应该减去第一个数以后比第一个数小的个数,再加上比第一个数大的个数。
原本用线段树求出每一位后面比这一位小的个数再用上面的办法求最小逆序数,没有想到每一次移动会导致后面比它本身大的数都要加1。
这题巧妙就在这...
分类:
其他好文 时间:
2014-08-14 10:46:48
阅读次数:
190
HDU 1394 Minimum Inversion Number(线段树求最小逆序数对)
ACM
题目地址:HDU 1394 Minimum Inversion Number
题意:
给一个序列由[1,N]构成,可以通过旋转把第一个移动到最后一个。
问旋转后最小的逆序数对。
分析:
注意,序列是由[1,N]构成的,我们模拟下旋转,总的逆序数对会有规律的变化。 ...
分类:
其他好文 时间:
2014-08-06 01:56:10
阅读次数:
162