数组前面的一个元素 大于等于 后面的一个元素就是一个逆序对; 树状数组可以快速求前缀和,利用这一特性,可以求逆序对个数,见下: 用数组c[ i ]记录数组a[ n ]中i这一元素出现的次数 ,当a[ n ]中元素较大时可以离散化处理。 将a[ n ]从a[n -1]到a[0] 依次存到树状数组中,每 ...
分类:
编程语言 时间:
2019-04-14 09:46:15
阅读次数:
141
双层循环排序,时间为O(n2) 归并排序时间为O(nlog(n)) ...
分类:
其他好文 时间:
2019-04-10 13:54:20
阅读次数:
182
题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 输入描述: 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,siz ...
分类:
编程语言 时间:
2019-04-09 18:17:54
阅读次数:
105
蛮力: 遍历数组,对每个元素都往前遍历所有元素,如果有发现比它小的元素,就count++。 最后返回count取模。 结果没问题,但超时哈哈哈,只能过50%。 归并法: 看讨论,知道了这道题的经典做法应该是用归并的思想,之所以用归并,是因为像上面我们直接比较a[i]后面的所有元素的话,肯定是O(n^ ...
分类:
编程语言 时间:
2019-04-05 00:32:32
阅读次数:
158
"P3521 [POI2011]ROT Tree Rotations" 题目大意: 给一棵$(1≤n≤200000)$个叶子的二叉树,可以交换每个点的左右子树,要求前序遍历叶子的逆序对最少。 我们发现交换两个子树并不会影响某个子树内的逆序对个数,只会对两个子树之间的逆序对产生影响. 所以我们将换与不 ...
分类:
其他好文 时间:
2019-04-02 21:27:55
阅读次数:
176
https://codeforces.com/gym/102082 题意: 给一个数组大小不超过1e5,每个数的值也是1e5以内,可以交换相邻两个数,求保证它呈现一个非递减再非递增的趋势的最小交换次数。 题解: 对每个数来说,只有两种情况,要么参与非递减部分要么参与非递增部分,对于前者它要移的次数就 ...
分类:
编程语言 时间:
2019-03-26 13:37:25
阅读次数:
209
题目 * 面试题51:数组中的逆序对 * 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。 * 输入一个数组,求出这个数组中的逆序对的总数P。 * 并将P对1000000007取模的结果输出。 即输出P%1000000007 思路 1、暴力 ,时间复杂度O(n^2) ...
分类:
编程语言 时间:
2019-03-23 22:42:03
阅读次数:
236
《剑指offer》 easy 1.不会用归并排序,没有想到怎么样最快速实现这个想法 2.暴利的循环解题肯定是没有好处的,要注意思考和现有的什么算法有异曲同工的地方 2h ...
分类:
编程语言 时间:
2019-03-18 22:31:48
阅读次数:
187
逆序对--三种解法 1.暴力,肯定会超时 2.归并排序 3.树状数组/线段树 对于不同的严格上升的(最长)子序列,也可以用树状数组/线段树的方法 ...
分类:
其他好文 时间:
2019-03-17 13:51:25
阅读次数:
139
题目链接 https://www.nowcoder.com/questionTerminal/96bd6684e04a44eb80e6a68efc0ec6c5 题意 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对 ...
分类:
编程语言 时间:
2019-03-17 13:45:19
阅读次数:
153