线段树
文章平均质量分 76
蒟蒻的ACMer
2014界大学新生
展开
-
sdut 2880 Devour Magic 线段树 区间更新和区间替换
题意:给你一个1~n的区间,每过一个单位时间区间值加一现在有一个操作 t l r 表示在t时间把 l--->r的值累加为ans然后清零分析:就是成段更新和成段替换 替换的优先级高于成段替换ACcode:#include #include #define ll long longusing namespace std;#define maxn 100010#defi原创 2016-05-24 11:15:05 · 656 阅读 · 0 评论 -
HDU 1166 敌兵布阵 一维树状数组or线段树
欢迎参加——每周六晚的BestCoder(有米!)敌兵布阵Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 60962 Accepted Submission(s): 25817Probl原创 2015-09-10 20:47:11 · 830 阅读 · 0 评论 -
HDU 5443 The Water Problem 线段树
裸的区间求最大值ACcode:#include #include #include #include #define tmp (st<<1)#define mid ((l+r)>>1)#define lson l,mid,tmp#define rson mid+1,r,tmp|1#define push_up(x) sum[x]=max(sum[tmp],sum[tmp|1原创 2016-06-11 13:48:07 · 414 阅读 · 0 评论 -
poj 2823 Sliding Windows 线段树|单调队列
题意:给你一个长为n的数组求任意连续长为k的子区域最大最小值 区间极值,很裸的线段树。但是正解应该是单调队列,单调队列比线段树快近一倍,因为充分利用之前计算的值。线段树差点超时ACcode:#include #include #include #define maxn 1000100#define tmp (st<<1)#define mid ((l+r)原创 2016-06-14 18:39:06 · 379 阅读 · 0 评论 -
hdu 5493 Queue 线段树加二分
题意:给你n个人的身高和这n个人满足在他前面有k个人比他高或者在他后面有k个人比他高。问是否存在这样的序列,如果有输出字典序最小的排列(输出身高)。对于一个位置上放什么身高的人我们可以优先放身高小的,以由小到大逐个考虑,假设现在考虑第i个元素,有num个人要比他高,由于他前面的人都比他矮,因此可以全部忽略。这时候因为要考虑2种情况,那么我们优先选择会让第i个元素比较靠前的策略。如果是前面有nu原创 2016-09-14 19:57:06 · 389 阅读 · 0 评论 -
POJ Count Color 线段树
题意:给定一个区域划分成n块,每块对应的序号是1~n初始情况下所有区域的颜色都是1有2种操作P x y c 把x~y区域的颜色变为cC x y 查询x~y区域的颜色有几种分析:我们用线段树处理sum【】存结点对应的区间的颜色如果颜色不唯一就记为-1ACcode:#include #include #include #include #include #原创 2017-04-10 20:34:01 · 365 阅读 · 0 评论 -
POJ 2886 反素数+线段树
题意:N个人进行约瑟夫环游戏第i轮的人能获得p(i)个糖果求获得最多糖果的人和糖果数p(i)为数i的因子的个数分析:约瑟夫环可以用线段树模拟下一次出局的人(因为每一次出局一个人所有的人的下标都回改变)知识点:反素数对于任何正整数x,其约数的个数记做g(x).例如g(1)=1,g(6)=4.如果某个正整数x满足:对于任意i(0因为我们要求的是最大的p(i)1ACcode:原创 2017-04-11 16:02:43 · 454 阅读 · 0 评论 -
poj 2750 Potted Flower 线段树区间合并加dp
题意:给定一个环形序列,在线单次跟新,修改一个元素,求环上最大子串和分析:如何求每次的环上最大子串和那么相当于这里介绍的方法51nod 求循环数组的最大子串和那么最优解就是=max(普通的最大子断和,总和-普通的“最小子段和")因为要求支持在线更新修改,那么我们可以用线段树来优化每次更新那么就是线段树区间合并问题需要维护下列数组int sum[maxnint l原创 2017-04-11 19:51:40 · 420 阅读 · 0 评论 -
POJ 1177&&HDU1828 Picture 线段树+扫描线
题意:求n个矩阵并后形成的图形的周长分析:这题大体思路和求矩阵面积并差不多,但是有所不同我们可以把所有的线段分为x方向的y方向首先我们如何求得x方向的线段呢?和求面积的时候一样我们从下往上扫描那么对于当前扫描的线我们可以求得这一水平线长度= 目前线段树中覆盖总和-上一次线段树覆盖的总和我们记上一次覆盖的长度为last那么第一次插入时候ans+=红原创 2017-04-13 21:53:08 · 704 阅读 · 0 评论 -
poj 3832&&hdu 3265 扫描线+线段树
题意:贴n张海报(海报的形状是矩形,且每个海报中都去除了一个矩形的区域)问覆盖面积分析:把一张海报切换成4个矩形就把问题转化成求4*n个矩阵面积并惹注意有可能出现空矩阵需要特判ACcode:#include #include #include #define maxn 50005#define tmp (st<<1)#define mid ((l+r)>>1)#原创 2017-04-14 13:47:06 · 373 阅读 · 0 评论 -
poj 1389 扫描线
裸矩形并ACcode:#include #include #include #define maxn 50005#define tmp (st<<1)#define mid ((l+r)>>1)#define lson l,mid,tmp#define rson mid+1,r,tmp|1#define ll long longusing namespace std;i原创 2017-04-14 14:27:53 · 304 阅读 · 0 评论 -
HDU 1542 Atlantis 线段树+扫描线
题意:求二维坐标下n个矩阵的面积并分析:如何求矩阵并的面积呢?如下图我们可以利用扫描线来做,什么是扫描线?你可以把这些矩阵合并后看做一个容器现在你要把这些容器注满水很明显:水先充满的地方为:更据这样的思想就可以把原图分为下面几个部分惹:那么如何用代码实现呢?我们需要一个Seg结构体储存x方向线段 其中有4个参数 h--->线段高度 l原创 2017-04-13 19:18:58 · 384 阅读 · 0 评论 -
hdu 1255 覆盖的面积 矩阵面积交
题意:求n个矩阵面积交分析:其实和求矩阵面积并是一样的思想我们只需增加一个nsum数组储存区间中覆盖2次及以上的长度就行#include #define maxn 200002#define tmp (st<<1)#define mid ((l+r)>>1)#define lson l,mid,tmp#define rson mid+1,r,tmp|1using n原创 2017-04-14 15:26:39 · 1089 阅读 · 0 评论 -
POJ 3264 Balanced Lineup RMQ 线段树
Balanced LineupTime Limit: 5000MS Memory Limit: 65536KTotal Submissions: 40890 Accepted: 19230Case Time Limit: 2000MSDescriptionFor the daily milking, Farme原创 2015-10-16 20:12:15 · 482 阅读 · 0 评论 -
HDU 3308 LCIS 线段树维护区间lcs
题意:给一个1~n的数组操作i把下标为x的值更新为y操作ii查询区间 x~y的lcs具体分析写在代码里///参考讨论版ACcode:原创 2016-05-31 21:45:02 · 622 阅读 · 0 评论 -
POJ 3667 Hotel 线段树区间合并
题意一开始有1~n个空房间对应2个操作 i)问有没有连续的长度为x的x间房如果有占满最左边的那个区间,输出这个区间的起点ii)把区间x~x+y-1的房间清空一个很明显的区间合并具体注意点写在注释里了ACcode:#include #include #define tmp (st<<1)#define mid ((l+r)>>1)#define lson l,mi原创 2016-05-31 17:54:35 · 500 阅读 · 0 评论 -
POJ 2828 Buy Tickets 线段树
Buy TicketsTime Limit: 4000MS Memory Limit: 65536KTotal Submissions: 16992 Accepted: 8411DescriptionRailway tickets were difficult to buy around the Lunar New Yea原创 2015-12-17 16:35:24 · 696 阅读 · 0 评论 -
HDU 2795 Billboard 线段树
BillboardTime Limit: 20000/8000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 16424 Accepted Submission(s): 6958Problem DescriptionAt the entranc原创 2015-11-17 17:11:48 · 434 阅读 · 0 评论 -
HDU I Hate It 线段树单点更新
I Hate ItTime Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 54533 Accepted Submission(s): 21352Problem Description很多学校流行一种比较的习惯。原创 2015-11-16 14:35:02 · 954 阅读 · 0 评论 -
HDU 1394 Minimum Inversion Number 线段树求最小逆序数
Minimum Inversion NumberTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 15368 Accepted Submission(s): 9372Problem Description原创 2015-11-14 11:55:50 · 1019 阅读 · 0 评论 -
大二训练第二周 - Distance Queries lca
E - Distance QueriesTime Limit:2000MS Memory Limit:30000KB 64bit IO Format:%I64d & %I64uSubmit StatusDescriptionFarmer John's cows refused to run in his marathon since he原创 2015-11-14 11:51:16 · 488 阅读 · 0 评论 -
大二训练第二周 D - 覆盖的面积 离散化坐标加线段树
D - 覆盖的面积Time Limit:5000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit StatusDescription给定平面上若干矩形,求出被这些矩形覆盖过至少两次的区域的面积. Input输入数据的第一行是原创 2015-11-14 11:48:00 · 1378 阅读 · 0 评论 -
大二训练第二周 Count the Colors 线段区间更新
C - Count the ColorsTime Limit:2000MS Memory Limit:65536KB 64bit IO Format:%lld & %lluSubmit StatusDescriptionPainting some colored segments on a line, some previously painte原创 2015-11-14 10:47:57 · 879 阅读 · 0 评论 -
大二训练第二周 A Simple Problem with Integers 线段树
区间更新,一开始 想着单点根新加个循环,果断t了,如果这样就会是n^2logn的复杂度。所以要区间更新,要有个延迟标记,等到下一次查询的时候更新。//要用long long 同样的代码G++太费时间。。。。B - A Simple Problem with IntegersTime Limit:5000MS Memory Limit:131072KB 6原创 2015-11-11 17:28:51 · 393 阅读 · 0 评论 -
HDU 1698 Just a Hook 线段树区间更新
题意:给你一个1到n的区间有q次操作每次操作把区间x~y替换成z最开始每个区间值为1 求最后整个区间的和 裸的区间替换ACcode:#include #include #include #define maxn 100011#define mid ((l+r)>>1)#define tmp (st<<1)#define len (r-l+1)#defin原创 2016-05-30 13:20:50 · 449 阅读 · 0 评论 -
POJ 2528 Mayor's posters 线段树 离散化
Mayor's postersTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 55856 Accepted: 16191DescriptionThe citizens of Bytetown, AB, could not stand that the ca原创 2016-05-06 15:31:32 · 738 阅读 · 0 评论 -
HDU 4027 Can you answer these queries? 线段树
题意:给你一个区间有两种操作 i)把x~y区间数据减小至原来的值的平方根 ii)查询区间x~y的值分析:简单的线段树更新,强烈剪枝 如果区间和sum【st】=r-l+1说明这个区间值全为一不需要继续操作 tle->acACcode:#include #include #include #include #define maxn 100002#define ll原创 2016-05-30 21:16:55 · 504 阅读 · 0 评论 -
HDU 1540 Tunnel Warfare xds
G - Tunnel WarfareTime Limit:2000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64uSubmit Status Practice HDU 1540Appoint description: System Crawler (2016-05-28)Descri原创 2016-05-31 12:28:51 · 472 阅读 · 0 评论 -
poj 2482 Stars in Your Window 扫描线 线段树
题意:给你n个星星,每个星星有不同的亮度,让你用N*M的矩形去套,如何套得最大亮度分析:因为题意用固定矩形去套那么对于每一个星星我们都可以建立一个矩形让后求矩形并的最大值如图:当然这些线还有其亮度,所以套最多的不一定最大我们需要2个数组 cnt【】维护当前区间的亮度maxx【】区间内最亮的亮度其中push_up() maxx[st]=max(maxx[tmp]原创 2017-04-14 17:43:10 · 348 阅读 · 0 评论