
线段树
文章平均质量分 82
青竹梦
在你没有尽全力之前,永远不知道最强的自己有多强!!!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
zoj-3772-Calculate the Function-线段树+矩阵
之前板刷了很多的矩阵的题目。结果心中就有了一个很错误的想法。 就是矩阵的题目都是用来高次幂运算的。 今天看了这道题目,一开始感觉是矩阵,后来看看了,感觉不是矩阵,就放弃了。 后来放学的时候,SCF跟我说这道题目是线段树+矩阵。 我就又开始想了这道题目。 后来仔细想了想发现,原来是线段树预处理矩阵,然后每次询问O(log(n))。 又学到了一招,真棒 #include #includ原创 2014-04-07 03:32:24 · 2416 阅读 · 0 评论 -
hdu-4027-Can you answer these queries?-线段树
由题意可知,每一个点最多可以被更新原创 2014-06-11 15:41:11 · 592 阅读 · 0 评论 -
hdu-4578-Transformation-线段树
当一道题目,使用__int64超时,使用int就能A的时候,我想,这个题,不是一个好题。。。。。 add[i]:记录加的lazy标记 mul[i]:记录乘的lazy标记 num[i]:记录数的lazy标记 sum[i][j]:第i段,j次方的和。 除去lazy标记的下放,这完全就是一道水的线段树的题目。。。 lazy标记如何下放呢? 1,首先查看num标记,如果存在,果断下放。 2原创 2014-05-27 15:32:26 · 1492 阅读 · 0 评论 -
poj-3225-Help with Intervals
超级恶心的一道题目。。。 查错查了一个小时。。。。 1,要用C++,用G++会wa。 2,注意检查边界。 3,注意标记的下放方式。 #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,1024000000") u原创 2014-06-11 17:19:48 · 874 阅读 · 0 评论 -
sgu-319-Kalevich Strikes Back-线段树
线段树记录当前区间是哪一个长方形在覆盖。 然后根据每一条线更新线段树。 如果是左边的边,那么把区间更新成当前长方形。 否则,把区间更新成当前长方形的前驱。 #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,102原创 2014-06-11 15:19:02 · 1101 阅读 · 0 评论 -
hdu-4288-Coder-线段树
感觉今天的状态有点不好。。。老是在小地方犯错。。。 简单的记录一下就好。 #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #define maxn原创 2014-06-11 19:56:00 · 856 阅读 · 0 评论 -
hdu-4419-Colourful Rectangle-线段树求面积并
这道题目很有意思,写的麻烦了,估计得写很长时间。 幸好,我一开始就想出来了比较简单的方法。。。 利用位运算,把颜色RGB分别用1,2,4,表示。 那么就可以根据当前区间的状态来求当前区间每一种状态的长度了。 #include #include #include #include #include #include #include #include #pragma comment(link原创 2014-06-10 20:27:19 · 964 阅读 · 0 评论 -
hdu-4605-Magic Ball Game-线段树+离线操作
以前用树状数组做过一次,现在用线段树再刷一次。。。 首先必须先离散化。。。 然后建立2颗线段树,第一颗表示往左走,每个节点的值的分布。 第二颗表示往右走,每个节点的值的分布。 然后根据左右走的关系,判断出x,y的值。 #pragma comment(linker, "/STACK:1024000000,1024000000") #include #include #inclu原创 2014-05-29 14:55:42 · 1386 阅读 · 0 评论 -
hdu-4533-约会安排
区间合并求值问题。 对于ds,ns分别记录每一个区间的最左长度,原创 2014-05-29 16:24:11 · 878 阅读 · 0 评论 -
hdu-3642--Get The Treasury-线段树求面积并
求空间中叠加3次及3次以上的体积。 因为|z| 然后对于每一层进行线段树求面积并。 #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #defin原创 2014-06-10 17:28:53 · 1066 阅读 · 0 评论 -
poj-1151-Atlantis-线段树求面积并
很裸的线段树求面积并。 坐标需要离散化一下。 #include #include #include #include #include #include #include #include #pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; #define maxn 11000 #define原创 2014-06-10 15:55:28 · 861 阅读 · 0 评论 -
poj-3264-Balanced Lineup-线段树-区域查询
区域查询操作。 ma[i]:i区间内的最大值 mi[i]:i区间内的最小值 #include #include #include #include #include using namespace std; #define INF 99999999 #define lmin 1 #define rmax n #define lson l,(l+r)/2,rt<<1 #define rson原创 2014-05-23 20:37:48 · 761 阅读 · 0 评论 -
hdu-4614-Vases and Flowers-线段树
在二分的基础上进行线段树。原创 2014-05-23 20:47:55 · 910 阅读 · 0 评论 -
hdu-4302-Holedox Eating-线段树-单点更新,有策略的单点查询
一开始实在是不知道怎么做,后来经过指导,猛然发现,只需要记录某个区间内是否有值即可。 flag[i]:代表i区间内,共有的蛋糕数量。 放置蛋糕的时候很好操作,单点更新。 ip:老鼠当前的位置 寻找吃哪一个蛋糕的时候: 1,要寻找0-ip这个区间内,位置最大的一个蛋糕的位置,记为ll。 2,要寻找ip-n这个区间内,位置最小的一个蛋糕的位置,记为rr。 找到ll,rr之后,就可以根据l原创 2014-05-24 00:39:13 · 1100 阅读 · 0 评论 -
hdu-1166-敌兵布阵-线段树-单点更新,区域查询
线段树的单点更新,区域查询操作。 #include #include #include #include #include using namespace std; #define lmin 1 #define rmax n #define lson l,(l+r)/2,rt<<1 #define rson (l+r)/2+1,r,rt<<1|1 #define root lmin,rmax,1原创 2014-05-23 20:35:02 · 890 阅读 · 0 评论 -
zoj-1610-Count the Colors-线段树-区域更新,单点查询
线段树的区域更新,然后单点查询。 x1 x2 c:区域更新x1-x2为c。 全部染色之后,从0-8000依次查询每个点的颜色。然后存贮每一种颜色有几块。 #include #include #include #include #include using namespace std; #define lmin 0 #define rmax 8000 #define lson l,(l+r)/原创 2014-05-23 20:33:55 · 999 阅读 · 0 评论 -
hdu-1698-Just a Hook-线段树-区域更新,区域查询
flag[i]:标记i这个区间的值。 val[i]:i这个区间的长度 #include #include #include #include #include using namespace std; #define INF 99999999 #define lmin 1 #define rmax n #define lson l,(l+r)/2,rt<<1 #define rson (l+r原创 2014-05-23 20:40:35 · 856 阅读 · 0 评论 -
hdu-1540-Tunnel Warfare-线段树
lmax[i]:i区间内,从左往右,连续的最大长度 rmax[i]:i区间内,从右往左,连续的最大长度 val[i]:i区间的长度。 #include #include #include #include #include #include using namespace std; #define INF 99999999 #define lmin 1 #define rmax n #def原创 2014-05-23 20:44:50 · 1310 阅读 · 0 评论 -
hdu-4747-Mex-线段树区域更新
部分题解摘抄cxlove,传送门:http://blog.youkuaiyun.com/acm_cxlove/article/details/11749383 题目:给出一个序列,mex{}表示集合中没有出现的最小的自然数。然后 求sigma(mex (i , j)). 做法:考虑左端点固定时的所有区间的mex值,这个序列是一个非递减了。。。首先要明白。 初始就是求出mex[i]表示 m原创 2014-05-26 15:48:25 · 1277 阅读 · 0 评论 -
hdu-1255-覆盖的面积-线段树
记录3个变量。 sum[i]:当前区间被覆盖2次及两次以上的面积。 num[i]:当前区间被覆盖1次及一次以上的面积。 cover[i]:覆盖的lazy标记。 对于每一个区间. 更新操作如下: void push_up(int_now) { if(cover[rt]==0) { num[rt]=num[rt<<1]+num[rt<<1|1];原创 2014-05-30 12:09:05 · 1330 阅读 · 0 评论