题目大意 给定一个1到n的排列,然后随机选取一个区间,让这个区间内的数随机改变顺序,问这样的一次操作后,该排列的逆序数的期望是多少 首先,一个随机的长度为len的排列的逆序数是(len)*(len-1)/4,这是显然的,因为每种排列倒序一遍就会得到一个新序列,逆序数是len*(len-1)/2 - ...
分类:
其他好文 时间:
2016-12-27 20:26:40
阅读次数:
259
容易看出ans[i]=ans[i-1]-q[i],q[i]为删去第i个数减少的逆序对。 先用树状数组算出最开始的逆序对,预处理出每个数前边比它大的和后边比它小的,就求出了q[i]的初始值。 设b[i]是第i个删除的数,pos[i]为i在数列里的位置。 对q[i]产生影响的是 1. j<i,pos[b ...
分类:
其他好文 时间:
2016-12-12 23:19:11
阅读次数:
240
最优复杂度:当输入数组就是排好序的时候,复杂度为O(n),而快速排序在这种情况下会产生O(n^2)的复杂度。 最差复杂度:当输入数组为倒序时,复杂度为O(n^2) 其实插入排序的复杂度和逆序对的个数一样,当数组倒序时,逆序对的个数为n(n-1)/2,因此插入排序复杂度为O(n^2)。 插入排序比较适 ...
分类:
编程语言 时间:
2016-12-03 21:27:05
阅读次数:
197
用归并排序方式 最原始的方法的复杂度是O(n^2)。 使用归并排序的方式,可以把复杂度降低到O(nlgn). 设A[1..n]是一个包含N个非负整数的数组。如果在i〈 j的情况下,有A〉A[j],则(i,j)就称为A中的一个逆序对。例如,数组(3,1,4,5,2)的“逆序对”有<3,1>,<3,2> ...
分类:
其他好文 时间:
2016-12-02 21:23:13
阅读次数:
158
额,考前没能把这篇文章发出来,考后发一发。 我已经无法很好的给它们分类了。后面还有一些模板如果没法分类就都放在这里吧。 一、二分答案(贴了另外一个) 二、快速幂 三、归并(求逆序对) 四、堆(排序,手写priority_queue) 1、加入元素 2、取出堆顶元素 五、二分匹配 六、Tarjan(有 ...
分类:
其他好文 时间:
2016-12-02 18:34:30
阅读次数:
224
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题目描述 Description 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 时间限制: 1 s ...
分类:
其他好文 时间:
2016-11-30 02:20:02
阅读次数:
282
A 解法:DP+二分 dp[i]=max(dp[i],dp[j]+p[i].v)(i>j) dp[i]表示建立i点之后能够获得的最大值 B 解法:模拟。字符串模拟 C 解法:树状数组寻找逆序对+预处理 D 解法:模版题,最小覆盖圆 ...
分类:
编程语言 时间:
2016-11-30 02:08:21
阅读次数:
214
M × N Puzzle Time Limit: 4000MS Memory Limit: 131072K Total Submissions: 4112 Accepted: 1140 Description The Eight Puzzle, among other sliding-tile pu ...
分类:
编程语言 时间:
2016-11-23 06:56:00
阅读次数:
206
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。 并将P对1000000007取模的结果输出。 即输出P%1000000007 本题采用归并排序,归并排序算法我在前一篇博客里写到过,在那个基础上进行修改即可!(强 ...
分类:
编程语言 时间:
2016-11-22 17:22:20
阅读次数:
155