题目链接:http://hihocoder.com/contest/hiho39/problem/1 ,归并排序求逆序数。 其实这道题也是可以用树状数组来做的,不过数据都比较大,所以要离散化预处理一下,文中也会给出离散化+树状数组的解法,不过要比归并排序慢一点。算法: 还是按照题中给的解...
分类:
编程语言 时间:
2015-04-03 13:16:38
阅读次数:
161
COWs
Description
Farmer John's cows have discovered that the clover growing along the ridge of the hill (which we can think of as a one-dimensional number line) in his field is particularly good.
...
分类:
其他好文 时间:
2015-04-03 09:37:16
阅读次数:
159
思路:
分治法 归并排序的过程中,有一步是从左右两个数组中,每次都取出小的那个元素放到tmp[]数组中
右边的数组其实就是原数组中位于右侧的元素。当不取左侧的元素而取右侧的元素时,说明左侧剩下的元素均比右侧的第一个元素大,即均能构成一个逆序对。假设现在左侧剩余n个元素,则逆序对数+n。
另外,如果当所有右侧的元素都取完,但是左侧仍然有元素剩余时,左侧剩余的元素已经在之前的运算中加到了逆序对中...
分类:
其他好文 时间:
2015-04-02 22:37:16
阅读次数:
223
BrainmanBrainmanhttp://poj.org/problem?id=1804求逆序数,用归并写的,不知道什么叫树状数组,以后看了再尝试} else if (aux[i] > aux[j]) { sum += end1-i+1; a[t] = aux[j++];} else { a[t...
分类:
其他好文 时间:
2015-04-01 19:35:34
阅读次数:
117
题意:求n个数的逆序对数,可以交换k次相邻的,所以求出原序列的逆序对后减去k即可。
思路:求逆序对有两种方法,归并排序和树状数组。逆序对的几种求法...
分类:
编程语言 时间:
2015-04-01 09:42:24
阅读次数:
296
首先,明确两个概念:
逆序对:数列a[1],a[2],a[3]…中的任意两个数a[i],a[j] (ia[j],那么我们就说这两个数构成了一个逆序对.
逆序数:一个数列中逆序对的总数.
例题一:POJ 1804. 点击打开链接
解题思路:每次交换只能减少一个逆序,而且必定能减少一个逆序,从而问题就转换为求逆序个数了。这题数据规模很小,暴力可过。
我这里提供了用Merge_sort的方...
分类:
编程语言 时间:
2015-03-31 18:07:05
阅读次数:
142
以前一般用树状数组和线段树做这种题
这次换个思路试试,归并排序!
#include
#include
#include
using namespace std;
typedef long long LL;
const int maxn = 111111;
int n;
int array[maxn];
int tmp[maxn];
LL ans;
void my_sort(int l,int...
分类:
编程语言 时间:
2015-03-31 17:59:25
阅读次数:
194
设A[1..n]是一个包含n个不同整数的数组。如果在iA[j],则(i,j)就称为A中的一个逆序对(inversion)。
给出一个算法,确定n个元素的任何排列中逆序对的书目。时间复杂度为o(nlgn)。
分治法求解思路:
分解:将数组A[1..n]分为两个子序列A[1..p]和A[p+1,n],二分法将其分解。。
解决:根据归并排序的思想,在合并过程中,计算逆序对。假如两...
分类:
其他好文 时间:
2015-03-27 22:19:52
阅读次数:
200
描述你被要求设计一个计算器完成以下三项任务:
1、给定y,z,p,计算Y^Z Mod P 的值;
2、给定y,z,p,计算满足xy≡ Z ( mod P )的最小非负整数;
3、给定y,z,p,计算满足Y^x ≡ Z ( mod P)的最小非负整数。分析
第一问快速幂
第二问线性模方程. x = z * inv(y) (mod p), 求逆元可以用费马小定理. yp?1≡1(modp)y^{p...
分类:
其他好文 时间:
2015-03-20 14:27:58
阅读次数:
194