数组中的逆序对 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。 思路 代码 ...
分类:
编程语言 时间:
2016-07-05 22:24:28
阅读次数:
189
结论是..把A串中的字符挪到B串里最近的出现这个字符的地方就能最优了。。。 求出A串中的每个位置上的字符,之后要挪到哪个位置。然后求一波逆序对就是答案了。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<a ...
分类:
其他好文 时间:
2016-07-05 20:42:28
阅读次数:
134
Ultra-QuickSort Time Limit: 7000MS Memory Limit: 65536K Total Submissions: 53685 Accepted: 19722 Description 题目太长可以不看。目的是给定数列求逆序对。 In this problem, yo ...
分类:
其他好文 时间:
2016-07-03 23:15:55
阅读次数:
209
http://codeforces.com/problemset/problem/351/B 题意:两个人轮流游戏,先手交换相邻两个数,后手先抛硬币,正面就左大右小换,反面就右大左小换,随机找到一对数,直到整个数列上升位置,求最小期望步数。 思路:由于第一个人每次都会减少一对逆序对,而后手会50%减 ...
分类:
其他好文 时间:
2016-07-01 11:42:01
阅读次数:
384
2431: [HAOI2009]逆序对数列 Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数。若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数。那么逆序对数为k的这样自然数数列到底有多少个? 对于一个数列{ai},如果有 ...
分类:
其他好文 时间:
2016-06-26 21:05:58
阅读次数:
169
题目在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数。解题方法一:暴力public class Solution {
public int InversePairs(int [] array) {
if(array == null || array.length <=1)
ret...
分类:
编程语言 时间:
2016-06-24 15:27:53
阅读次数:
197
将数字离散化并去重,则对于一对逆序对$i<j$,$a_i>a_j$,贡献为$\frac{2}{a_i-a_j+1}$,因此只要对于每个差值统计出对应的逆序对个数即可。 将序列分块,块内平方暴力,块与块之间做FFT即可。 时间复杂度$O(n\sqrt{n\log n})$。 ...
分类:
编程语言 时间:
2016-06-23 18:36:05
阅读次数:
175
2016-06-22 这个题本想昨天晚上做来,但昨晚狂风大作,暴雨倾盆(听说我们学校最落后的一堵墙都被吹到了),停电了,我只能无聊的瞭望了教学楼一晚上。。。。。。 这个题把删除看成插入的话,插入一个点 新增逆序对就是比他早插入的,位置靠前,数比他大或 位置靠后,数比他小。那这就是个三维偏序集,可以用 ...
分类:
其他好文 时间:
2016-06-22 09:19:03
阅读次数:
166
一个节点的儿子是否交换,不会影响到它和兄弟节点间的逆序对数。 所以每次合并线段树的时候算一下交换与不交换的逆序对数,然后选个较小值就行了。 1 #include<cstdio> 2 #include<iostream> 3 #include<cstring> 4 #include<algorithm ...
分类:
其他好文 时间:
2016-06-18 18:17:41
阅读次数:
104