这道题网上很多代码是错误的,但是可以AC。
比如这组数据
10 3
p 0 9
r 0 5
r 6 9
输出应该是 0 1 1
所有有的人直接记录该区间是否被覆盖过的方法是错误的
正确方法应该是记录这段区间的最小高度(就是最接近初始位置的高度),和最小高度对应的最长左区间和右区间
开一个sum记录这段区间最小高度的块数,min_v 记录该区间最小高度
cover作为懒惰标记下推...
分类:
系统相关 时间:
2015-04-30 20:10:11
阅读次数:
240
这题WA了好久,一直以为是lld和I64d的问题,后来发现是自己的pushdown函数写错了,说到底还是因为自己对线段树理解得不好。因为是懒惰标记,所以只有在区间分开的时候才会将标记往下传递。更新和查询都要pushdown。 1 #include 2 3 typedef long long LL.....
分类:
其他好文 时间:
2015-04-26 18:01:12
阅读次数:
101
有m个操作,每个操作 X Y Z是将区间[X, Y]中的所有的数全部变为Z,最后询问整个区间所有数之和是多少。区间更新有一个懒惰标记,set[o] = v,表示这个区间所有的数都是v,只有这个区间被分开的时候再往下传递。 1 #include 2 3 const int maxn = 10000.....
分类:
其他好文 时间:
2015-04-26 16:25:29
阅读次数:
157
最近做的一些Splay题及思路
BZOJ 1588
就是求一个数的前驱和后继,用Splay很简单
POJ 3468
很经典的线段树题目,用Splay做练习懒惰标记
HDU 1890
涉及区间翻转,注意直接以数列下标建树,对原数列排序后,直接查找,找到后删除。
HDU 3436
很好的一道题,首先离散化,Splay
树中每个节点表示的是一段区间...
分类:
其他好文 时间:
2015-03-06 22:15:03
阅读次数:
287
题目连接:http://poj.org/problem?id=3468线段树功能:update:成段增减 query:区间求和。分析:需要用到延迟标记(或者说懒惰标记),简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候。#include#include#i...
分类:
其他好文 时间:
2015-01-21 23:55:40
阅读次数:
204
http://acm.hdu.edu.cn/showproblem.php?pid=1698
实现求全部区间的和 ,修改部分区间的值。
成段更新需要用到懒惰标记 lazy。简单来说就是每次更新的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新or询问到的时候。延迟标记的意思是:这个区间的左右儿子都需要被更新,但是当前区间已经更新了。
#include
#inc...
分类:
其他好文 时间:
2015-01-20 20:36:55
阅读次数:
233
Just a Hook
Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 18384 Accepted Submission(s): 9217
Problem Description
In the game o...
分类:
其他好文 时间:
2014-11-27 23:44:20
阅读次数:
289
线段树模板题,练的是懒惰标记。
懒惰标记,就是更新一段区间的时候,如果小区间被包含在了所需要更新的区间里面,那么直接对代表这个区间的数组元素赋值,之后做一个标记(表示这个区间的子区间都需要更新)但是不继续递归(这样可以节省很多的时候)。
11657115
2014-09-15 14:17:26
Accepted
1698
796MS
2380K
1750 B
G+...
分类:
其他好文 时间:
2014-09-15 16:04:19
阅读次数:
183
区间翻转 一脸Splay。第一次做区间翻转。一开始懒惰标记表示当前这可子树都需要翻转。这样就有个问题:旋转的状态的不一定是正确的(rotate传的参数不一定正确)。然后参考ac代码。联系线段树的lazy标记,每次跟新某个区间的时候,该线段区间肯定要先跟新,再在改区间节点打上标记,表示后面的子区间节点...
分类:
其他好文 时间:
2014-09-07 12:16:05
阅读次数:
327
题目链接:uva 11402 - Ahoy, Pirates!
题目大意:给定给一个字符串,字符串的给定方式为各个循坏单位的循环次数和循环单位,然后是Q次操作。
F:将l~r之间的数变成1E:将l~r之间的束变成0I:将l~r之间的数0变1,1变0Q:查询l~r之间1的个数
解题思路:线段树,注意pushdown函数中I操作不属于覆盖操作,要与子节点中的懒惰标记判断关系处理。
...
分类:
其他好文 时间:
2014-08-25 15:01:14
阅读次数:
185