线段树
文章平均质量分 82
青竹梦
在你没有尽全力之前,永远不知道最强的自己有多强!!!
展开
-
zoj-3772-Calculate the Function-线段树+矩阵
之前板刷了很多的矩阵的题目。结果心中就有了一个很错误的想法。就是矩阵的题目都是用来高次幂运算的。今天看了这道题目,一开始感觉是矩阵,后来看看了,感觉不是矩阵,就放弃了。后来放学的时候,SCF跟我说这道题目是线段树+矩阵。我就又开始想了这道题目。后来仔细想了想发现,原来是线段树预处理矩阵,然后每次询问O(log(n))。又学到了一招,真棒#include #includ原创 2014-04-07 03:32:24 · 2369 阅读 · 0 评论 -
hdu-4027-Can you answer these queries?-线段树
由题意可知,每一个点最多可以被更新原创 2014-06-11 15:41:11 · 564 阅读 · 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 · 1448 阅读 · 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 · 841 阅读 · 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 · 1066 阅读 · 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 · 812 阅读 · 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 · 932 阅读 · 0 评论 -
hdu-4605-Magic Ball Game-线段树+离线操作
以前用树状数组做过一次,现在用线段树再刷一次。。。首先必须先离散化。。。然后建立2颗线段树,第一颗表示往左走,每个节点的值的分布。 第二颗表示往右走,每个节点的值的分布。然后根据左右走的关系,判断出x,y的值。#pragma comment(linker, "/STACK:1024000000,1024000000")#include#include#inclu原创 2014-05-29 14:55:42 · 1348 阅读 · 0 评论 -
hdu-4533-约会安排
区间合并求值问题。对于ds,ns分别记录每一个区间的最左长度,原创 2014-05-29 16:24:11 · 842 阅读 · 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 · 1030 阅读 · 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 · 838 阅读 · 0 评论 -
poj-3264-Balanced Lineup-线段树-区域查询
区域查询操作。ma[i]:i区间内的最大值mi[i]:i区间内的最小值#include#include#include#include#includeusing 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 · 738 阅读 · 0 评论 -
hdu-4614-Vases and Flowers-线段树
在二分的基础上进行线段树。原创 2014-05-23 20:47:55 · 872 阅读 · 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 · 1076 阅读 · 0 评论 -
hdu-1166-敌兵布阵-线段树-单点更新,区域查询
线段树的单点更新,区域查询操作。#include#include#include#include#includeusing 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 · 861 阅读 · 0 评论 -
zoj-1610-Count the Colors-线段树-区域更新,单点查询
线段树的区域更新,然后单点查询。x1 x2 c:区域更新x1-x2为c。全部染色之后,从0-8000依次查询每个点的颜色。然后存贮每一种颜色有几块。#include#include#include#include#includeusing namespace std;#define lmin 0#define rmax 8000#define lson l,(l+r)/原创 2014-05-23 20:33:55 · 971 阅读 · 0 评论 -
hdu-1698-Just a Hook-线段树-区域更新,区域查询
flag[i]:标记i这个区间的值。val[i]:i这个区间的长度#include#include#include#include#includeusing 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 · 829 阅读 · 0 评论 -
hdu-1540-Tunnel Warfare-线段树
lmax[i]:i区间内,从左往右,连续的最大长度rmax[i]:i区间内,从右往左,连续的最大长度val[i]:i区间的长度。#include#include#include#include#include#includeusing namespace std;#define INF 99999999#define lmin 1#define rmax n#def原创 2014-05-23 20:44:50 · 1280 阅读 · 0 评论 -
hdu-4747-Mex-线段树区域更新
部分题解摘抄cxlove,传送门:http://blog.csdn.net/acm_cxlove/article/details/11749383题目:给出一个序列,mex{}表示集合中没有出现的最小的自然数。然后 求sigma(mex (i , j)).做法:考虑左端点固定时的所有区间的mex值,这个序列是一个非递减了。。。首先要明白。初始就是求出mex[i]表示 m原创 2014-05-26 15:48:25 · 1229 阅读 · 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 · 1298 阅读 · 0 评论