//对于数列中的一个数,在它前面比它大的一定要和它交换
//在它后面比它小的一定得和它交换
//可以用树状数组存入每一个数在它之前比它小的数的个数
//那么(i-1)-total[i]为在它前面比它大的数的个数
//然后在所有数都存入树状数组后用getsum(num[i])可以求出整个数列中比这个数小的数的个数
//那么getsum(num[i])-1-total[i]则为在它之后比它小...
分类:
编程语言 时间:
2015-03-06 20:47:31
阅读次数:
160
//ans[i]=ans[i-1]+(n+1)-2*num[i]
//num[i]为输入时的数据
//ans[i]为m=i时的逆序数
//用树状数组求ans[0]的逆序对
#include
#include
#include
using namespace std;
const int maxn=5010;
int num[maxn];
int tree[maxn];
int...
分类:
编程语言 时间:
2015-03-06 19:07:36
阅读次数:
165
转自tangjz的博客...基础算法模拟搜索广度优先搜索(BFS)优化:双向BFS深度优先搜索(DFS)优化:折半DFS迭代加深搜索(IDS)启发式搜索(Astar)优化:IDAstar优化:剪枝、位运算排序冒泡排序/选择排序基数排序/桶排序计数排序插入排序/希尔排序快速排序归并排序/求逆序对数堆排...
分类:
编程语言 时间:
2015-02-23 10:50:21
阅读次数:
330
题目大意就是说帮你给一些(n个)乱序的数,让你求冒泡排序需要交换数的次数(n
显然不能直接模拟冒泡排序,其实交换的次数就是序列的逆序对数。
由于数据范围是 0 ≤ a[i] ≤ 999,999,999所以先要离散化,然后用合适的数据结果求出逆序
可以用线段树一步一步添加a[i],每添加前查询前面添加比它的大的有多少个就可以了。
也可用树状数组,由于树状数组求的是(1...x)的数量和所以每...
分类:
编程语言 时间:
2015-02-22 20:47:46
阅读次数:
200
题意: 东海岸有x个城市,西海岸有y个。x与y 之间有很多高速公路。问k条路有多少个交叉点。
我就是求的逆序对,把east当作 pos 按照从大到小排序。然后插入。接下来的就跟求逆序对的一样了。
线段树或者数状数组都能过。
注意最后要用long long。
(午夜一发,写完吃个面包睡觉。
#include
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2015-02-17 02:07:41
阅读次数:
218
/***************************************************************************************************************** 题意:给你N个排列不规则的数,任务是把它从小到大排好,每次只能交换相邻...
分类:
其他好文 时间:
2015-01-29 14:09:39
阅读次数:
175
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1394线段树功能:update:单点增减 query:区间求和分析:如果是0到n-1的排列,那么如果把第一个数放到最后,对于这个数列,逆序数是减少a[i],而增加n-1-a[i]的,所以每次变化为res+...
分类:
其他好文 时间:
2015-01-21 23:51:52
阅读次数:
248
求逆序对个数。
暴力 n^2 TLE妥妥的。要么 归并排序的时候统计,要么线段树或者数状数组优化。
时间复杂度都是 n*logn
线段树求逆序数怎么写呢。
例如样例的
9 1 0 5 4
其位置pos 为
0 1 2 3 4
再来一个数组设为
0 0 0 0 0
线段树先插入 (9,0),把插入的位置 0 变成 1。
1 0 0 0 0
然后统...
分类:
其他好文 时间:
2015-01-13 12:34:11
阅读次数:
189
归并排序求逆序对by mps 【1】什么是逆序对? 对于一个数列需要按从小到大排序,如果有ai,aj且满足ai>aj和i>1;20 merge_sort(l,mid);21 merge_sort(mid+1,r);22 Union(l,mid,r);...
分类:
编程语言 时间:
2014-12-23 23:49:24
阅读次数:
261
前几天开始看树状数组了,然后开始找题来刷。 首先是 POJ 2299Ultra-QuickSort:http://poj.org/problem?id=2299 这题是指给你一个无序序列,只能交换相邻的两数使它有序,要你求出交换的次数。实质上就是求逆序对,网上有很多人说它的原理是冒泡排序,可...
分类:
编程语言 时间:
2014-12-13 23:22:22
阅读次数:
286