线段树
文章平均质量分 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 · 698 阅读 · 0 评论 -
poj 2528 Mayor's posters
题目逆向思维,将海报从后往前的顺序帖就能避免处理覆盖海报的问题,因为逆向处理每次贴海报只能“有空”才能贴,不能覆盖数据有点大需要离散话#include#include#includeusing namespace std;#define MAXN 10005struct node{ int l,r; bool cov;}t[MAXN*8];struct原创 2014-03-26 18:11:34 · 423 阅读 · 0 评论 -
hdu 3397 Sequence operation(线段树,lazy,区间合并)
hdu 3397 Sequence operation线段树lazy和区间合并的原创 2014-05-15 13:29:30 · 497 阅读 · 0 评论 -
hdu 1540 Tunnel Warfare(线段树区间合并)
hdu 1540 Tunnel Warfare原创 2014-05-13 19:49:13 · 535 阅读 · 0 评论 -
CF 19D Points(线段树+set)
离散化x坐标线段树维护x坐标区间内最大的y值原创 2014-07-02 20:49:50 · 509 阅读 · 0 评论 -
poj 2886 Who Gets the Most Candies?(线段树、反素数)
poj 2886 Who Gets the Most Candies?此题线段树的思路倒是没什么问题,关键在于求原创 2014-07-02 13:27:53 · 500 阅读 · 0 评论 -
hdu 4288 Coder(线段树)
hdu 4288 Coder此题表示有一定难度啊、、shoux原创 2014-07-02 17:06:00 · 607 阅读 · 0 评论 -
poj 2481 Cows(线段树)
poj 2481 Cows原创 2014-07-03 11:27:28 · 522 阅读 · 0 评论 -
CF 46D Parking Lot(区间合并)
这个题和Hotel差不多把整个shu原创 2014-07-03 14:29:33 · 590 阅读 · 0 评论 -
hdu 3308 LCIS(区间合并)
hdu 3308 LCIS原创 2014-07-03 17:25:20 · 573 阅读 · 0 评论 -
poj 1436 Horizontally Visible Segments(线段树)
poj 1436 Horizontally Visible Segments太暴力了、、#include#include#includeusing namespace std;#define MAXN 8005#define lch p<<1#define rch p<<1|1#define mid (t[p].l+t[p].r)>>1struct no原创 2014-07-04 15:09:33 · 487 阅读 · 0 评论 -
hdu 3642 Get The Treasury(扫描线、立方体交)
hdu 3642 Get The Treasury和原创 2014-07-08 16:39:42 · 486 阅读 · 0 评论 -
hdu 3255 Farming(扫描线、求立方体交)
hdu 3255 Farming纠结了几个小时,不过还是很值得的,x原创 2014-07-07 18:43:43 · 754 阅读 · 0 评论 -
hdu 1256 Counting Squares
链接:http://acm.hdu.edu.cn/showproblem.php?pid=1264题意:在一个直角坐标系中给出若干个矩阵对角线两个点的坐标,求所有的矩形所覆盖的面积,x,y范围[0,100],且是整数这个题分到线段树那类的,但是看了题后感觉范围也比较小,直接数组暴力模拟应该不会超时,结果和所想一样。不过最近在学线段树,还是要慢慢研究线段树的做法,想到后再贴线段树的代码。原创 2013-09-12 22:06:04 · 727 阅读 · 0 评论 -
hdu 2795 Billboard 线段树
Billboard这个题想到怎么建树就简单了,叶子节点为“一层”,树的大小最大200000就行了,因为最多就每个贴一层#include#include#define MAXN 200005struct 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 · 404 阅读 · 0 评论 -
noj 1560 Let Slimes Grow Up(线段树,lazy,暂未A)
noj 1560 Let Slimes Grow Up原创 2014-05-07 19:49:22 · 505 阅读 · 0 评论 -
poj 3145 Harmony Forever(线段树)
poj 3145 Harmony Forever奇葩怪异吐血题,无力duo'shuo原创 2014-05-07 19:40:20 · 789 阅读 · 0 评论 -
zoj 3633 Alice's present 线段树
链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=3633题意:给出一n个数的序列,然后又m个询问[x,y](下标),如果[x,y]内没有重复的数,就输出OK,否则输出从右至左第一个重复的数字测试数据:51 2 3 1 231 41 53 5[1,4]间从右到左第一个重复的数字是1[原创 2013-10-15 21:06:12 · 4488 阅读 · 0 评论 -
poj 2352-Stars
链接:http://poj.org/problem?id=2352因为题目给出的数据y是非递减的,所以y可以直接忽略掉,题目不是很难,比较适合练手,给出线段树和树状数组做的代码线段树:#include#include#define MAXN 32010int sum[15010];struct node{ int l,r; int s;}t[4*原创 2013-09-16 09:01:51 · 790 阅读 · 0 评论 -
hdu 3333 Turing Tree 线段树
链接:http://acm.hdu.edu.cn/showproblem.php?pid=3333题意:给出n个数的一个序列,询问m次,每次询问区间[i,j]内改序列不同数之和,就是说该区间如果某个数出现多次,则只算一次。这个题要从正面去做太难太难,反正我是不会。线段树域保存区间不同数之和。先把所有的询问保存下来,然后以右端点递增排序,遇到右端点相同的怎么排都无所谓。然原创 2013-10-20 16:39:01 · 744 阅读 · 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 · 850 阅读 · 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 · 2248 阅读 · 0 评论 -
poj 3468 A Simple Problem with Integers(线段树成段更新,延迟标记,Lazy)
链接:http://poj.org/problem?id=3468线段树成段更新,延迟更新#include#include#define MAXN 100005struct 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 · 1694 阅读 · 0 评论 -
覆盖的面积(线段树-扫描线)
覆盖的面积题目要求的时统计覆盖过两次以上部分的面积,query判断修改下就行了,除此之外和Atlantis完全一样#include#include#include#includeusing namespace std;#define MAXN 1005#define ll p<<1#define rr p<<1|1struct node{ int l,r;原创 2014-03-30 21:34:26 · 614 阅读 · 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#includeusing namespace st原创 2014-03-31 09:33:46 · 569 阅读 · 0 评论 -
Luck and Love (二维线段树)
http://acm.hdu.edu.cn/showproblem.php?pid=1823需要注意的东西:查询的时候输入的hl可能比hr大,al可能比ar大数据中有h和a相同的数据,修改的时候要取两者中大的那个不能直接覆盖#include#include#include#includeusing namespace std;#define MAXNMT原创 2014-03-31 21:16:30 · 499 阅读 · 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 · 499 阅读 · 0 评论 -
poj2777 Count Color线段树延迟更新,二进制状态记录
题目链接线段树延迟更新的运用,这里用到二进制的方式保存状态,位运算向上更新状态需要注意的是给出的a,b可能a>b#include#include#define MAXN 100005struct 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 · 842 阅读 · 0 评论 -
poj 2482 Stars in Your Window(线段树,扫描线)
poj 2482 Stars in Your Window题意,用一个矩形qu原创 2014-05-05 12:22:20 · 790 阅读 · 0 评论 -
poj 2828 Buy Tickets(线段树,逆序插入)
poj 2828 Buy Tickets题意:原创 2014-05-05 21:30:03 · 482 阅读 · 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 · 646 阅读 · 0 评论