设A[1…n]是一个包含n个不同数的数组。如果在iA[j],则(i,j)就称为A中的一个逆序对(inversion)【《算法导论》2-4】
现给出一个数列,求该数列中的逆序对(逆序对 )
利用归并排序的方法我们给出如下算法://
// main.cpp
// CpushTest
//
// Created by Ellen on 14-5-11.
// Copyright (c...
分类:
其他好文 时间:
2014-05-13 22:53:12
阅读次数:
340
普通排序:直接分配一个同等大小的数组,反向copy即可.char* Reverse(char*
s){ //将q指向字符串最后一个字符 char* q = s ; while( *q++ ) ; q -= 2 ; //分配空间,存储逆序后的字符串。
char* p = newchar[sizeof(...
分类:
其他好文 时间:
2014-05-12 16:30:14
阅读次数:
338
HDU 1394 Minimum Inversion Number (数据结构-线段树)
题目大意:
求逆序数。也就是给你一个序列,每次求逆序数,然再把第一个数放到这个序列的末尾,构成新的序列。问你这n个序列的最小的逆序数。
解题思路:
1、对于每个序列,其原来的逆序数记为 pre , 如果当前把该序列 第一个数 a[0] 移动到尾部,那么新序列的逆序数为 pre-a[i]+(n-a[i]-1)
因为序列中比a[i]大的数有 n-a[i]-1 个,比a[i]小的有 a[i]个。
因此只需求出...
分类:
其他好文 时间:
2014-05-12 07:07:01
阅读次数:
301
关键:以回文中心位置为变量进行遍历//必须把纯字母先提出来 否则肯能会出现错误 比如: lvlv=
在检查长度4时 lvlv认为不是回文 vlv=认为是回文 但实际上 lvl 出现的要更早一些//判断回文的方法 可以输入字符串后 左右比较 或者分别正序 逆序
存储 判断是否相等//我的思路不对 严重...
分类:
其他好文 时间:
2014-05-08 21:59:46
阅读次数:
426
题意:两两相邻的元素可以交换,问最小交换次数使得数列为升序。
思路:归并排序分治法。看到琦神又用了树状数组的方法求。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define P...
分类:
其他好文 时间:
2014-05-07 08:54:01
阅读次数:
488
minimum inversion number:最小逆序数Minimum Inversion
NumberTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 65536/32768 K
(Java/Others)Total Submission(...
分类:
其他好文 时间:
2014-05-07 00:43:39
阅读次数:
469
OJ题目:click here~~
题目分析:1……n按顺序围成一个圈,1与n相邻。交换相邻两个数算1步。至少需要多少步,得到一个逆方向的1……n的圈。
分两半,使用冒泡排序,排成逆序的交换次数之和即为结果。
AC_CODE
int f(int n){
return n*(n - 1)/2;
}
int main(){
int n , t;
cin >> t;
...
分类:
其他好文 时间:
2014-05-06 23:15:55
阅读次数:
301
Minimum Inversion Number Time Limit:1000MS Memory
Limit:32768KB 64bit IO Format:%I64d & %I64u Description The inversion number
of a given number seque...
分类:
其他好文 时间:
2014-05-04 12:27:07
阅读次数:
349