题目地址:POJ 2777
我去。。延迟标记写错了。标记到了叶子节点上。。。。这根本就没延迟嘛。。。怪不得一直TLE。。。
这题就是利用二进制来标记颜色的种类。然后利用或|这个符号来统计每个区间不同颜色种数。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#incl...
分类:
其他好文 时间:
2014-08-10 15:52:40
阅读次数:
258
题目地址:HDU 1698
区间替换裸题。同样利用lazy延迟标记数组,这里只是当lazy下放的时候把下面的lazy也全部改成lazy就好了。
代码如下:
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using na...
分类:
其他好文 时间:
2014-08-09 11:39:07
阅读次数:
192
题目地址:POJ 3468
打了个篮球回来果然神经有点冲动。。无脑的狂交了8次WA。。居然是更新的时候把r-l写成了l-r。。。
这题就是区间更新裸题。区间更新就是加一个lazy标记,延迟标记,只有向下查询的时候才将lazy标记向下更新。其他的均按线段树的来就行。
代码如下:
#include
#include
#include
#include
#include
using n...
分类:
其他好文 时间:
2014-08-08 21:28:46
阅读次数:
272
P1006:真不会线段树,更不会带LAZY的线段树。思想就是延迟标记#include#include#include#include#includeusing namespace std;#define lson l,m,rt>1; build(lson); build(rson);}v...
分类:
其他好文 时间:
2014-08-01 19:36:32
阅读次数:
221
题目链接题意 : 给你n个初值,然后进行两种操作,第一种操作是将(L,R)这一区间上所有的数变成x,第二种操作是将(L,R)这一区间上所有大于x的数a[i]变成gcd(x,a[i])。输出最后n个数。思路 : 暴力线段树,将区间进行更新,可以用延迟标记,也可以不用。p数组代表当前节点这一段上的值是不...
分类:
其他好文 时间:
2014-08-01 19:01:22
阅读次数:
211
UVA 11402 - Ahoy, Pirates!
题目链接
题意:总的来说意思就是给一个01串,然后有3种操作
1、把一个区间变成1
2、把一个区间变成0
3、把一个区间翻转(0变1,1变0)
思路:线段树搞,开一个延迟标记当前操作即可,注意几种状态间的转变方式即可
代码:
#include
#include
#include
using namesp...
分类:
其他好文 时间:
2014-07-30 23:54:35
阅读次数:
268
题意:有n个数初始值都为1,m个操作a,b,c,表示把区间[a,b]变为c,求最后n个数的和。
经典区间更新求和问题,需要用到延迟标记(或者说是懒惰标记),简单老说就是每次更新
的时候不要更新到底,用延迟标记使得更新延迟到下次需要更新或询问的时候。
#include
#include
#include
#include
#include
#include
#inclu...
分类:
其他好文 时间:
2014-07-30 12:20:23
阅读次数:
241
延迟标记像极了线段书,不再多说。
区间反转在树伸展到位之后,也变成了简单的递归交换左右儿子。
愈发感觉到伸展树简直太漂亮了,伸展操作更是诱惑到不行 ,总之数据结构太有魅力了。
比较简单,就直接上模板了。
#include
#include
#include
#include
#include
#include
#include
#include
#include
#pr...
分类:
其他好文 时间:
2014-06-05 08:33:14
阅读次数:
190
求一部分和的线段树,因为是对5取余,所以给定一段区间a-b,假设其位置会有变化,最多会有5种和,那么就可以保留这五种和,在用lz进行延迟标记时,保存位置变化了多少也就知道了该从当前和转到哪一个和。当时把lz标记那么部分写成覆盖了,应该是+=,WA了两次。
1 #include 2 #inclu...
分类:
其他好文 时间:
2014-06-03 16:17:37
阅读次数:
235