调了好久。。。。 转化成三维偏序,cdq处理。 好像比较快? ...
分类:
其他好文 时间:
2016-09-14 12:55:31
阅读次数:
174
n个数,求一次逆序对。接着有m次修改操作,把每次输入的位置p的数之后<=它的数取出来,从小到大排序后再放回空位里,求逆序对。(N,M<=500,000 , Ai<=10^9)思路:1.往后修改就存后缀,而不是一般的前缀。存数 i 之后<=它的数的个数为s[i],用于后续求逆序对。2.修改时选出的数排 ...
分类:
其他好文 时间:
2016-09-12 14:25:55
阅读次数:
136
单组数据比51nod的那道题还弱。。。而且连优化都不用了。。 2431: [HAOI2009]逆序对数列 Description 对于一个数列{ai},如果有i<j且ai>aj,那么我们称ai与aj为一对逆序对数。若对于任意一个由1~n自然数组成的数列,可以很容易求出有多少个逆序对数。那么逆序对数为 ...
分类:
其他好文 时间:
2016-09-09 22:07:51
阅读次数:
110
在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%1000000007 题目保证输入的数组中没有的相同的数字 数据范围: 对于%50的数据,size<=10^4 对于% ...
分类:
编程语言 时间:
2016-09-04 22:27:33
阅读次数:
172
题目大意:给出n个数的序列,每次可以交换相邻的两个数,问把序列变成编号i在编号i+1左边,编号1在编号n右边(一个环)最少需要多少步。如:35421最少交换两次变为34512。 一开始看到这题,只会O(n²),后来仔细想了一下,妙啊,妙不可言。 首先我们求出逆序对,即为这个序列变成升序排列的最小次数 ...
分类:
其他好文 时间:
2016-09-03 16:25:02
阅读次数:
337
题目描述 猫猫TOM和小老鼠JERRY最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。最近,TOM老猫查阅到一个人类称之为“逆序对”的东西,这东西是这样定义的:对于给定的一段正整数序列,逆序对就是序列中ai>aj且i<j的有序对。知道这概念后,他们就比赛 ...
分类:
编程语言 时间:
2016-08-26 22:39:32
阅读次数:
182
1、题意:排序交换的次数就是逆序对的个数,所以就是求区间逆序对
2、分析:本蒟蒻太垃圾,不会在线做法,直接离线了,思考一下逆序对的求法,跑一边树状数组就好,那么我们使用莫队算法,每次转移的时候就按照这个点对答案的贡献,然后把贡献减掉就行了,时间复杂度O(nn√logn)O(n\sqrt{n}\log n)#include
#include
#include <cs...
分类:
其他好文 时间:
2016-08-22 15:02:10
阅读次数:
157
每个测试案例包括两行: 第一行包含一个整数n,表示数组中的元素个数。其中1 <= n <= 10^5。 第二行包含n个整数,每个数组均为int类型。 1.直接的做法是逐个统计,复杂度是N^2, 2.可以利用归并排序的思想,在排序过程中统计逆序对的个数。时间复杂度依然是 N*Log(N)。 可以从代码 ...
分类:
编程语言 时间:
2016-08-22 00:27:21
阅读次数:
165