Description 给定一个正整数序列a,对于每次询问,输出al...ar中的逆序对数,强制在线。 Input 第一行包括一个整数n(1<=n<=50000),表示数列a中的元素数。 第二行包括n个整数a1...an(ai>0,保证ai在int内)。 接下来一行包括一个整数m(1<=m<=500
分类:
其他好文 时间:
2016-02-03 19:13:52
阅读次数:
166
问题:给定一个数组A,A存有n个互不相同的整数。定义:若iA[j],则称(i,j)为A的一个逆序对(inversation)。设计一个O(nlogn)算法求A中逆序对个数。 显然最坏情况下逆序对有n(n-1)/2个,如;5 4 3 2 1完全逆序,逆序对有(5-1)*5/2=10对。若用暴...
分类:
编程语言 时间:
2016-01-20 01:05:23
阅读次数:
385
树套树。。我写了线段树套treap= =外层线段树表示各段区间,每段区间内按权值大小开个treap 设数列为map[],一开始求出逆序对个数。 每次假设交换l和r这两位置的数,答案就要减去[l+r,r-1]中比map[l]小的数的个数,再减去[l+1,r-1]中比map[r]大的数的个数, ...
分类:
其他好文 时间:
2016-01-15 15:59:44
阅读次数:
176
Orz黄学长,蒟蒻在黄学长的带领下,通过阅读黄学长的代码!终于会了这道题! 首先我想先说一下这道题的思路(准确来说是黄学长的)。 很明显,树状数组应该不用讲吧!关键是内存怎么开,维护一些什么样的数据? 其实我们通过观察,很快可以发现,你维护被删的数比维护所有的数轻松多了(不管是空间上,还是时间上.....
分类:
编程语言 时间:
2016-01-14 22:16:59
阅读次数:
314
常用算法: 1 package ArrayMergeSort; 2 3 import java.util.Arrays; 4 5 public class Solution { 6 public int[] mergeSort(int[] arr) { 7 if (arr...
分类:
其他好文 时间:
2016-01-14 14:04:50
阅读次数:
209
这两道题是一样的。可以发现,-1变成的数是单调不降。记录下原有的逆序对个数。预处理出每个点取每个值所产生的逆序对个数,然后dp转移。#include#include#include#include#include#include#define rep(i,l,r) for (int i=l;i=r;...
分类:
其他好文 时间:
2016-01-11 23:52:58
阅读次数:
262
树套树呀树套树。题意为可以交换两个位置的数,询问每次交换后的逆序对数。直接区间线段树上面套一个值域线段树,然后稍微讨论一下。首先建好树查询一次得到一个ans。(话说我们得到了一个nlog^2的求逆序对的算法)设两个位置为i,j,如果i==j或者是a[i] == b[j]的话就不管。i>j则交换。如果...
分类:
其他好文 时间:
2015-12-28 12:05:17
阅读次数:
210
题意:给一个排列的每个前缀区间的逆序对数,让还原 原序列。思路:考虑逆序对的意思,对于k = f[i] - f[i -1],就表示在第i个位置前面有k个比当前位置大的数,那么也就是:除了i后面的数字之外,它是在剩下的数字当中第k+1大的。知道这个之后,可以用树状数组来帮助找出剩下的数中第k大的数,刚...
分类:
编程语言 时间:
2015-12-10 16:46:11
阅读次数:
172
题目简述:有一个全排列,一直每个前缀区间的逆序对数,还原这个排列。fi记录逆序对数,pi记录该位置数值,则k=fi-f(i-1)表示前i-1个数比pi大的数的个数,那么只要在剩余元素求出按大小顺序第i-k个数字即可。线段树+二分搜索,线段树bit[i]记录i的在剩余元素的排名顺序。 1 /*****...
分类:
其他好文 时间:
2015-12-06 20:49:57
阅读次数:
160
ZYB's PremutationMemory Limit: 131072/131072 K (Java/Others)问题描述ZYBZYB有一个排列PP,但他只记得PP中每个前缀区间的逆序对数,现在他要求你还原这个排列.(i,j)(i A_jA?i??>A?j??输入描述第一行一个整数TT表示数据...
分类:
编程语言 时间:
2015-12-06 00:07:26
阅读次数:
209