
线段树
文章平均质量分 80
yjCola
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
hdu 4521 小明系列问题——小明序列
链接:http://acm.hdu.edu.cn/showproblem.php?pid=4521 题目中文 这个题我用线段树做的,也有更快的算法,这里只介绍线段树的方式 叶子节点为输入的值 从头开始遍历,线段树天然地排好序,所有不用管大小的问题,设加入了点a[i],那么在一个子序列中这个点最近的下一个点就是a[i+d+1],相当于对于a[i+d+1]来说,当加入了点a[i]时,就原创 2013-10-14 22:50:43 · 908 阅读 · 0 评论 -
poj 2528 Mayor's posters
题目 逆向思维,将海报从后往前的顺序帖就能避免处理覆盖海报的问题,因为逆向处理每次贴海报只能“有空”才能贴,不能覆盖 数据有点大需要离散话 #include #include #include using namespace std; #define MAXN 10005 struct node { int l,r; bool cov; }t[MAXN*8]; struct原创 2014-03-26 18:11:34 · 464 阅读 · 0 评论 -
hdu 3397 Sequence operation(线段树,lazy,区间合并)
hdu 3397 Sequence operation 线段树lazy和区间合并的原创 2014-05-15 13:29:30 · 531 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare(线段树区间合并)
hdu 1540 Tunnel Warfare原创 2014-05-13 19:49:13 · 586 阅读 · 0 评论 -
CF 19D Points(线段树+set)
离散化x坐标 线段树维护x坐标区间内最大的y值原创 2014-07-02 20:49:50 · 559 阅读 · 0 评论 -
poj 2886 Who Gets the Most Candies?(线段树、反素数)
poj 2886 Who Gets the Most Candies? 此题线段树的思路倒是没什么问题,关键在于求原创 2014-07-02 13:27:53 · 547 阅读 · 0 评论 -
hdu 4288 Coder(线段树)
hdu 4288 Coder 此题表示有一定难度啊、、 shoux原创 2014-07-02 17:06:00 · 647 阅读 · 0 评论 -
poj 2481 Cows(线段树)
poj 2481 Cows原创 2014-07-03 11:27:28 · 582 阅读 · 0 评论 -
CF 46D Parking Lot(区间合并)
这个题和Hotel差不多 把整个shu原创 2014-07-03 14:29:33 · 658 阅读 · 0 评论 -
hdu 3308 LCIS(区间合并)
hdu 3308 LCIS原创 2014-07-03 17:25:20 · 618 阅读 · 0 评论 -
poj 1436 Horizontally Visible Segments(线段树)
poj 1436 Horizontally Visible Segments 太暴力了、、 #include #include #include using namespace std; #define MAXN 8005 #define lch p<<1 #define rch p<<1|1 #define mid (t[p].l+t[p].r)>>1 struct no原创 2014-07-04 15:09:33 · 537 阅读 · 0 评论 -
hdu 3642 Get The Treasury(扫描线、立方体交)
hdu 3642 Get The Treasury 和原创 2014-07-08 16:39:42 · 541 阅读 · 0 评论 -
hdu 3255 Farming(扫描线、求立方体交)
hdu 3255 Farming 纠结了几个小时,不过还是很值得的,x原创 2014-07-07 18:43:43 · 807 阅读 · 0 评论 -
hdu 1256 Counting Squares
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1264 题意:在一个直角坐标系中给出若干个矩阵对角线两个点的坐标,求所有的矩形所覆盖的面积,x,y范围[0,100],且是整数 这个题分到线段树那类的,但是看了题后感觉范围也比较小,直接数组暴力模拟应该不会超时,结果和所想一样。不过最近在学线段树,还是要慢慢研究线段树的做法,想到后再贴线段树的代码。原创 2013-09-12 22:06:04 · 774 阅读 · 0 评论 -
hdu 2795 Billboard 线段树
Billboard 这个题想到怎么建树就简单了,叶子节点为“一层”,树的大小最大200000就行了,因为最多就每个贴一层 #include #include #define MAXN 200005 struct node { int l,r; int max; int lmax,rmax; }t[MAXN*4]; int h,w; int max(int a,i原创 2014-03-26 19:58:06 · 435 阅读 · 0 评论 -
noj 1560 Let Slimes Grow Up(线段树,lazy,暂未A)
noj 1560 Let Slimes Grow Up原创 2014-05-07 19:49:22 · 536 阅读 · 0 评论 -
poj 3145 Harmony Forever(线段树)
poj 3145 Harmony Forever 奇葩怪异吐血题,无力duo'shuo原创 2014-05-07 19:40:20 · 829 阅读 · 0 评论 -
zoj 3633 Alice's present 线段树
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633 题意:给出一n个数的序列,然后又m个询问[x,y](下标),如果[x,y]内没有重复的数,就输出OK,否则输出从右至左第一个重复的数字 测试数据: 5 1 2 3 1 2 3 1 4 1 5 3 5 [1,4]间从右到左第一个重复的数字是1 [原创 2013-10-15 21:06:12 · 4589 阅读 · 0 评论 -
poj 2352-Stars
链接:http://poj.org/problem?id=2352 因为题目给出的数据y是非递减的,所以y可以直接忽略掉,题目不是很难,比较适合练手,给出线段树和树状数组做的代码 线段树: #include #include #define MAXN 32010 int sum[15010]; struct node { int l,r; int s; }t[4*原创 2013-09-16 09:01:51 · 837 阅读 · 0 评论 -
hdu 3333 Turing Tree 线段树
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3333 题意:给出n个数的一个序列,询问m次,每次询问区间[i,j]内改序列不同数之和,就是说该区间如果某个数出现多次,则只算一次。 这个题要从正面去做太难太难,反正我是不会。 线段树域保存区间不同数之和。 先把所有的询问保存下来,然后以右端点递增排序,遇到右端点相同的怎么排都无所谓。 然原创 2013-10-20 16:39:01 · 784 阅读 · 0 评论 -
hdu 1542 Atlantis(线段树,扫描线)
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1542 题意:n个矩阵,给出每个矩阵的左下和右上两个点的坐标,求出所有矩形总的覆盖面积。 扫描线问题,因为坐标是浮点型,那就必须把坐标离散化,我这直接上map了。 再来就是求这个面积的方式了:我这是向y轴映射,那么就保存每一条竖线,包扩该条竖线的x坐标,上下两个y坐标,还有用lr保存这条竖线是原创 2013-10-26 14:48:07 · 913 阅读 · 0 评论 -
poj3667 Hotel (线段树区间合并)
链接:http://poj.org/problem?id=3667 题意:n个连续的房间m个操作。操作分两种,第一种以1 x形式给出,找到最左的能连续容下x个人的连续房间,并输出左端点的编号,如果找不到就输出0.第二章以2 l x的形式给出,表示以l为起点的x个房间都清空。 查询的时候要能直接获取区间的最大连续空房间,这样就能判断能不能连续放下这x个人,但这样还确定不了具体放哪。放的位原创 2013-10-23 16:54:10 · 2309 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers(线段树成段更新,延迟标记,Lazy)
链接:http://poj.org/problem?id=3468 线段树成段更新,延迟更新 #include #include #define MAXN 100005 struct node { int l,r; __int64 s,c; }t[MAXN*4]; void construct(int l,int r,int p) { t[p].l=l,t[p].r=r,t[原创 2013-10-21 12:08:36 · 1753 阅读 · 0 评论 -
覆盖的面积(线段树-扫描线)
覆盖的面积 题目要求的时统计覆盖过两次以上部分的面积,query判断修改下就行了,除此之外和Atlantis完全一样 #include #include #include #include using namespace std; #define MAXN 1005 #define ll p<<1 #define rr p<<1|1 struct node { int l,r;原创 2014-03-30 21:34:26 · 695 阅读 · 0 评论 -
Picture 线段树扫描线求轮廓线
http://acm.hdu.edu.cn/showproblem.php?pid=1828 思路来自http://www.cnblogs.com/ka200812/archive/2011/11/13/2247259.html 向大牛膜拜 #include #include #include #include #include #include using namespace st原创 2014-03-31 09:33:46 · 607 阅读 · 0 评论 -
Luck and Love (二维线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=1823 需要注意的东西: 查询的时候输入的hl可能比hr大,al可能比ar大 数据中有h和a相同的数据,修改的时候要取两者中大的那个不能直接覆盖 #include #include #include #include using namespace std; #define MAXNMT原创 2014-03-31 21:16:30 · 543 阅读 · 0 评论 -
hdu 1394 Minimum Inversion Number 线段树
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1394 先求出原串的逆序数,然后每次最前一个数放在最后逆序数的变化量为 : n-2*num[i]-1 ,解释如下 因为每次都是把最前一个数num[i]换到最后,也就是说此时比num[i]小的数全在其后,也就是有num[i]组逆序数对,于是ans-=num[i] (减去这个数原有的逆序数对) 然后放在最原创 2014-03-23 15:40:22 · 535 阅读 · 0 评论 -
poj2777 Count Color线段树延迟更新,二进制状态记录
题目链接 线段树延迟更新的运用,这里用到二进制的方式保存状态,位运算向上更新状态 需要注意的是给出的a,b可能a>b #include #include #define MAXN 100005 struct node { int l,r; int c; int rec; }t[MAXN*4]; void construct(int l,int r,int p)原创 2014-03-23 23:10:32 · 902 阅读 · 0 评论 -
poj 2482 Stars in Your Window(线段树,扫描线)
poj 2482 Stars in Your Window 题意,用一个矩形qu原创 2014-05-05 12:22:20 · 830 阅读 · 0 评论 -
poj 2828 Buy Tickets(线段树,逆序插入)
poj 2828 Buy Tickets 题意:原创 2014-05-05 21:30:03 · 524 阅读 · 0 评论 -
线段树总结一
先看一个例子:给出一个数组a[ n ],提供两种操作:1、修改其中任意一个数字。2、给出一个下标区间[ i , j ],得出a[ ]中该下标区间数字之和。 按照最朴素的想法做,修改数字可以在O(1)的复杂度下实现,操作2用循环从i到j求和,若有m次操作2,则复杂度为O(mn),那么这样的一个算法最终复杂度实为O(n^2),这样的复杂度下能处理的数据规模就比较有限。而采用线段树这样一种数据结构原创 2014-02-24 18:52:43 · 719 阅读 · 0 评论