树状数组求逆序数
样例输入:
3
1 2 3
4
4 3 2 1
样例输出:
0
6
#include
#include
#include
#include
using namespace std;
int a[10005];
int n;
int lowbit(int t)
{
return t&(-t);
}
void Update(int...
分类:
其他好文 时间:
2014-08-08 18:20:56
阅读次数:
250
#include#include#include#define maxn 100050using namespace std;int b[maxn];int n;int lowbit(int x){ return x&(-x);}void ADD(int x, int c) //向下查询...
分类:
其他好文 时间:
2014-08-08 17:55:46
阅读次数:
224
HDU 4911 Inversion(基本算法-排序)
题目大意:
有n个数,问你经过K次交换后的逆序数最少多少个?
解题思路:
根据排序的思想,每一步都能减少1个逆序数,所以K步之多减少K个逆序数。
因此,这题转化为了求逆序数,数据量略微大,用归并排序即可。...
分类:
其他好文 时间:
2014-08-08 12:58:36
阅读次数:
228
思路:本题因为是点修改,所以我们可以用线段树或者是树状数组了。线段树的基本操作我在我的代码中会具体体现,关键是要理解下面这幅图,具体的思想大家可以去看看其他的资料
线段树AC代码:
#include
#include
#include
#include
#include
using namespace std;
#define N 50005
int num[N];
struct p
{
...
分类:
其他好文 时间:
2014-08-08 12:47:16
阅读次数:
296
这道题是树状数组的题,但是用普通数组也能整出来,没学树状数组,就用的普通数组,算是高效算法吧,下面是我的修改思路:
1.一上来我写了如下代码:把每个新加进去的数压入vector,但是我在当t=1时,我的想法是将v[i]一个一个加上去,这样肯定会超时,而且我这个方法的sum是最后一起求的,这样多了个循环,又耗费时间。
#include
#include
#include
#include
#in...
分类:
其他好文 时间:
2014-08-08 12:39:25
阅读次数:
305
【题意描述】就是给定n个星星的x,y坐标,y坐标按照从小到大的顺序进行排列,x坐标随机排列。下面求对于每个星星而言,其它星星的x,y的坐标都小于等于该星星的数目,然后输出所有的情况。【思路分析】我们这道题可以采用树状数组求解,将x+1作为树状数组的底标。【AC代码】#include #includ....
分类:
其他好文 时间:
2014-08-08 12:29:55
阅读次数:
182
题目链接:点击打开链接
题意是求 ia[j]>a[k] 的对数
如果只有2元组那就是求逆序数的做法
三元组的话就用一个树状数组x表示 数字i前面有多少个比自己大的个数
然后每次给这个y数组求和,再把x中>a[i]的个数存入y中即可
#include
#include
#include
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-08 02:04:59
阅读次数:
207
点击打开链接
Inversion
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)
Total Submission(s): 1106 Accepted Submission(s): 474
Problem Description
bob...
分类:
其他好文 时间:
2014-08-07 23:16:55
阅读次数:
306
离线处理+树状数组
//http://blog.csdn.net/zz_1215/
#pragma comment(linker, "/STACK:102400000,102400000")
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#inc...
分类:
其他好文 时间:
2014-08-07 19:07:11
阅读次数:
256
经典的线段树求解逆序数问题。
运用了一个逆序数的性质,如果一个数从首位换到尾位,这其逆序数将减少y[i],增加n-y[i]-1。
举个例子说明,如果一个排列3 1 2 0 4本来三前面应该有三个数比他小的,但是现在3在首位,则说明3产生的逆序数有3个,而将3换到尾位后,就说明比3大的都在3前面了,所以此时3的逆序数有n-y[i]-1(5-3-1 = 1).
线段树的话,先建立一个空...
分类:
其他好文 时间:
2014-08-07 13:09:40
阅读次数:
178