线段树&树状数组
文章平均质量分 82
BIGKAKA
What they have done? What are you doing?
展开
-
Minimum Inversion Number [树状数组]
这也是一道求逆序对的题,不过是求所有数列中的逆序对的最小值,1A了好开心~~~想了挺久的,首先求升序的每个数的顺序对,即i例如: 1 3 6 9 0 8 5 7 4 2 顺序对: 0 1 2 3 0 4 3 5 3 2 p1在求逆序对: 1 2 4 6 0 4 2 2 1 0原创 2015-12-13 20:23:12 · 485 阅读 · 0 评论 -
POJ2777 Count Color【线段树】
很显然,这是一道线段树的题,但难点就是怎么保存区间的颜色数,想了很久,曾经考虑过二进制,可是我不太懂二进制,所以就不想了,其实不用二进制也可以,可是脑子笨,不会用数组来保存颜色数,到现在还是不太会,,,,进入正题吧,这道题颜色最多只有30种,所以可以用二进制的方法来保存每一种不同的颜色,例如 2^0,2^1,2^2,2^4……2^29来表示颜色1,2,3……30.为什么减一呢?因为二进制中2^原创 2015-12-15 15:20:23 · 453 阅读 · 0 评论 -
Just a Hook hdu1698 [线段树区间更新]
这是一道比较明显的线段树区间更新,但是写起来还是有点麻烦~直接上模板相关链接:just a hook#include #include #include #include using namespace std;#define N 100005int s[N<<2];int a[N<<2];void pushup(int rt) //向原创 2015-12-13 11:10:05 · 373 阅读 · 0 评论 -
POJ3067 Japan
一道很明显的求逆序对数,可是脑残的我想到了二维去了~~纠结了一番,,竟然二维的A了,喜大普奔啊~~二维的话,我觉得不用去排序了,先把所有的位置保存到二维数组中,然后求每个点的右上方的和~~ans+=sum(x[i]-1,m+1)-sum(x[i]-1,y[i]);刚开始的时候都WA了n*n遍了,一直找不到原因,后来看discuss说K的范围有10^6辣么大,对啊,我又把它忽略了,导原创 2015-12-13 10:03:40 · 430 阅读 · 0 评论 -
hdu1540 Tunnel Warfare
一道线段树的题目,早就忘记线段树怎么写了,所以对于线段树一脸的懵逼~~~但是这道题并没有那么简单(对我来说),1~n个数,有三种操作,1.毁坏i 2,修复最后一个毁坏的i3询问i的最大连续区间这道题需要构造三个区间,一个左连续最大区间(就是从左端点开始的最大连续距离),一个右连续最大区间,一个区间最大连续区间(lsum,rsum,sum)在更新单点时,如果毁坏就把原创 2016-03-13 11:48:34 · 358 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers
一道简单的线段树,可是对于脑残的我写起来也废了好大功夫~~QWQ因为是区间更新所以需要添加一个down函数,但是少了一个+号WA了好久~~qwq注意写法~~# include # include #include #include using namespace std;typedef long long LL;const int maxn=100000+10;LL原创 2016-03-13 17:13:44 · 293 阅读 · 0 评论 -
数据结构----树状数组
重温了一遍树状数组,已经忘得差不多了。。。第01讲 什么是树状数组?树状数组用来求区间元素和,求一次区间元素和的时间效率为O(logn)。有些同学会觉得很奇怪。用一个数组S[i]保存序列A[]的前i个元素和,那么求区间i,j的元素和不就为S[j]-S[i-1],那么时间效率为O(1),岂不是更快?但是,如果题目的A[]会改变呢?例如:我们来定义下列问题:我们有n原创 2016-08-02 21:26:57 · 412 阅读 · 0 评论