题意:
给出一段长为n的数列,求其逆序对数;
然后给出m个操作,每次操作给出l,r;
交换l,r并输出操作之后的逆序对数;
n
题解:
求逆序对本来是一个很简单的事情,然而动态修改就不能用树状数组直接搞了;
因为树状数组求逆序对是不支持区分某个数在它前面还是后面的;
所以考虑求在它之前小于它的数的个数,用线段树维护区间,套treap维护排名;
在求排名的过程中顺便记录一个...
分类:
其他好文 时间:
2015-05-26 10:49:29
阅读次数:
175
题意:
给一个整数序列,为0-n-1的一个排列,然后每次将这个排列的第一个数字移到最后一个,总共进行n-1次,这样加上原始序列总共有 n个序列,求出这n个序列中逆序对数的最小值。
这道题本来是划分到线段树的,但考虑到n
具体关系推导过程:
不妨把当前序列设为 a[i],a[i+1]....a[n-1],a[0],a[1],...,a[i-1],把a[i]移到最后的时候,a[i]到a...
分类:
其他好文 时间:
2015-05-24 08:52:21
阅读次数:
117
求逆序对问题与解决方案原理
在一个数列中,如果规定从小到大为正序,那么如果排在后面的某个元素比前面的某一个元素小,那么就称这两个数构成一个逆序对,例如,数列5,4,3,2,1中,任一个数都与它前面的数构成逆序对,这个序列中一共就有1+2+3+4=10个逆序对,数列23541中有5个逆序对,那么任给定一个数列,如何知道有多少个逆序对呢?简单的方法是将每个元素与它后面的元素比较,然后就可以累加出总的...
分类:
其他好文 时间:
2015-05-22 09:52:32
阅读次数:
221
题目大意:Tom学会了通过写程序求出一个1-n的排列的逆序对数,但他的老师给了他一个难题:
给出一个1-n的排列,求所有字典序比它小的1-n的排列的逆序对数之和。
Tom一时不知道该怎么做,所以他来找你帮他解决这个问题。
因为数可能很大,答案对109+7取模。
解题思路:从1到n枚举k,表示当前要计算的排列与读入的排列前k-1项相同,而第k项不同。对于每一个k,再枚举一个t,表示当前要计算的...
分类:
其他好文 时间:
2015-05-13 16:48:23
阅读次数:
193
题目传送:Minimum Inversion Number
思路:线段树,求最小逆序数,先可以通过n*logn的时间用线段树求出初始的逆序对数,然后递推求出其他的解,递推过程看代码
AC代码:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#i...
分类:
其他好文 时间:
2015-05-13 14:49:06
阅读次数:
158
题目:给定一个1到n的排列,求字典序小于这个排列的所有排列的逆序对数之和。思路:既然是求字典序小于这个排列的,不妨将排列根据和它前k位相同来分类,然后枚举第k+1位的数(小于原序列第k+1位的数),假设逆序对的位置为(x,y),对于1 4 #include 5 #include 6 #in...
分类:
其他好文 时间:
2015-05-11 01:19:19
阅读次数:
135
A,水题,直接枚举到sqrt
B,每次对于每一位枚举,如果小于当前位,那么答案可以计算出来,增加得答案为:设3个部分,前完全一样的部分a,中间新选的一个b,后面的全排列c,这样就把每部分和每两部分能够组成的逆序对个数计算出来,由于n只有100,里面在去枚举也是没问题的,主要是后面全排列c的逆序对数,这个可以利用dp处理出来,dp[i] = dp[i - 1] * i + i! * sum(i -...
分类:
其他好文 时间:
2015-05-10 15:44:46
阅读次数:
162
Tom and permutation
Accepts: 120
Submissions: 422
Time Limit: 2000/1000 MS (Java/Others)
Memory Limit: 65536/65536 K (Java/Others)
问题描述
Tom学会了通过写程序求出一个1-n的排列的逆序对数,但他的老师给了他一个...
分类:
其他好文 时间:
2015-05-10 09:52:33
阅读次数:
118
题意:
Tom学会了通过写程序求出一个1-n的排列的逆序对数,但他的老师给了他一个难题:
给出一个1-n的排列,求所有字典序比它小的1-n的排列的逆序对数之和。
Tom一时不知道该怎么做,所以他来找你帮他解决这个问题。
因为数可能很大,答案对109+7取模。
从前往后推,先计算1-k的所有排列可以产生逆序总数,
先假设db[2]为1-2的结果,那么我们来看3的排列,他是由1[2,3]...
分类:
其他好文 时间:
2015-05-10 09:46:21
阅读次数:
125
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4911题目大意:最多可以交换K次,就最小逆序对数解题思路:逆序数定理,当逆序对数大于0时,若akright[j]出现逆序情况时,cnt+=(leftnum-i),即当前right[j]元素和left[i]...
分类:
编程语言 时间:
2015-04-29 11:33:09
阅读次数:
159