解题报告算导上给了提示 用归并排序的代码进行修改来实现 思考后不难看出 归并排序的合并(merge)过程中 对数据进行了比较1)如果数组L 的当前某元素大于数组R的当前元素,那么 由于L数组是有序的(升序) 因此 L数组当前元素以及他后面的所有元素都与R数组构成逆序对2)我们的排序并不影响逆序对的数...
分类:
其他好文 时间:
2014-08-06 22:31:22
阅读次数:
451
对于n个数,可以做k次移动,每次移动可以互换相邻位置的两个数,问最少 number of pair (i,j) where 1≤ii>aj.
如果不移动的话,ans=’n个数的逆序对数‘,移动k次会减少k个
归并排序求逆序对数:
#include "stdio.h"
#include "string.h"
#include "math.h"
int b[100010],a[1...
分类:
其他好文 时间:
2014-08-06 14:53:51
阅读次数:
211
http://poj.org/problem?id=2299
给出n个数,每次只能交换两个相邻的数,问使得n个数有序最少需要交换多少次。
归并排序的模板,重在理解,小白书p144.
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include...
分类:
其他好文 时间:
2014-08-06 10:38:41
阅读次数:
234
Inversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit:
131072/131072 K (Java/Others)
Problem Description
...
分类:
其他好文 时间:
2014-08-06 10:38:01
阅读次数:
211
归并排序求逆序数,然后ans-k与0取一个最大值就可以了。
也可以用树状数组做,比赛的时候可能姿势不对,树状数组wa了、、
Inversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 578 Accept...
分类:
其他好文 时间:
2014-08-06 10:32:51
阅读次数:
224
求逆序数模板(树状数组+离散化 || 归并排序法)...
分类:
其他好文 时间:
2014-08-06 10:28:52
阅读次数:
218
15.Sort List--链表在O(nlogn),常数空间内完成排序关键点:中间分裂链表,采用双指针归并排序 中间分裂链表的方法:快慢指针,快指针走两步,这样就可以找到中间的了C++:http://blog.csdn.net/jiadebin890724/article/details/213.....
分类:
其他好文 时间:
2014-08-06 01:33:30
阅读次数:
232
/** \brief poj2299
*
* \param date 2014/8/5
* \param state AC
* \return memory 4640K time 3250ms
*
*/
#include
#include
#include
#include
using namespace std;
const int MAXN=500000;
int Ar...
分类:
其他好文 时间:
2014-08-05 22:48:40
阅读次数:
313
题意:根据题目要求交换相邻的两个元素k次,使得最后剩下的逆序对数最少
思路:如果逆序数大于0,存在0
利用归并排序计算逆序对数。
#include
#include
#include
using namespace std;
const int MAXN = 1000005;
int arr[MAXN], b[MAXN];
int n, k;
long long...
分类:
其他好文 时间:
2014-08-05 22:48:10
阅读次数:
264
各类排序算法总结三.交换类排序[接上]2.快速排序 快速排序是通过比较关键码、交换记录,以某个记录为界(该记录称为支点),将待排序列分成两部分。其中,一部分所有记录的关键码大于等于支点记录的关键码,另一部分所有记录的关键码小于支点记录的关键码。我们将待排序列按关键码以支点记录分成两部分的过程,称为一次划分。对各部分不断划分,直到整个序列按关键码有序. 如果每次划分对一个元素定位后,该元素的左侧子序...
分类:
其他好文 时间:
2014-08-05 22:41:20
阅读次数:
388