Fork me on GitHub
摘要: Training address: http://acm.hust.edu.cn/vjudge/contest/view.action?cid=38966#overviewA.Count Color--- POJ 2777这题初看不好下手,再想想,T#include #include #include using namespace std;#define N 100010struct node{ int mark; int sum;}tree[4*N];void pushup(int rt){ tree[rt].sum = tree[2*rt].sum | tree[2*r... 阅读全文
posted @ 2013-12-25 21:53 whatbeg 阅读(280) 评论(0) 推荐(0) 编辑
摘要: (更新点查询区间)这题重在想到,写代码很容易了。。这题是利用线段树求逆序数,不按给定的顺序建树,而是有序地插入。比如每插入一个数,就统计之前插入的那些数里比他大的有多少个,这个数就是此时的逆序数,然后累加每个的逆序数,就是整个原始序列的逆序数,怎么统计呢?前面说了,是有序的插入,查询比它大的数岂不是查它右边就好了?即查询a[i]~n-1中插入了多少数,凡插入了的即是比他大的。这样,总的逆序数就出来了。现在求一个最小值。这里有个结论,因为每次都把第一个移到最后即可,考虑第一个元素,x[0]是此时的逆序数,把x[0]放到最后,这时要增加原来比a[0]大的个数(即n-a[0]-1个)个逆序数,同时要 阅读全文
posted @ 2013-12-25 10:03 whatbeg 阅读(310) 评论(0) 推荐(0) 编辑