题目大概说给一棵树,树上结点都有颜色(1到60),进行下面两个操作:把某结点为根的子树染成某一颜色、询问某结点为根的子树有多少种颜色。 子树,显然DFS序,把子树结点映射到连续的区间。而注意到颜色60种,这样就可以用一个64位整型去表示颜色的集合,然后就是在这个连续区间中用线段树成段更新颜色集合和区 ...
分类:
其他好文 时间:
2016-07-13 09:11:52
阅读次数:
208
题目连接:http://www.spoj.com/problems/LITE/en/。 题意:有若干个灯泡,每次对一段操作,这一段原先是亮的,就关了;原先是关着的,就打开。询问某一段的打开的灯泡的个数。 分析:很显然的成段更新,但是一开始想着用某段是不是相同的来维护,敲了很长时间都没有实现。后来经过 ...
分类:
其他好文 时间:
2016-07-06 20:21:27
阅读次数:
170
Description Given N integers A={A[0],A[1],...,A[N-1]}. Here we have some operations: Operation 1: AND opn L R Here opn, L and R are integers. For L≤i≤ ...
分类:
其他好文 时间:
2016-05-23 22:36:27
阅读次数:
439
题目链接:http://poj.org/problem?id=3237 一棵有边权的树,有3种操作。 树链剖分+线段树lazy标记。lazy为0表示没更新区间或者区间更新了2的倍数次,1表示为更新,每次更新异或1就可以。 熟悉线段树成段更新就很简单了,最初姿势不对一直wa,还是没有彻底理解lazy标 ...
分类:
其他好文 时间:
2016-05-23 20:56:17
阅读次数:
245
算是我真正意义上的区间更新的第一题,我是这样理解区间更新的:
为了节省时间,在更新区间的时候不必每次都更新到叶子节点。如果当前节点的的区间被包含在查询区间内,就暂时只更新这个节点。但是如果仅仅这样,将来在下次更新的时候,如果涉及了该节点的孩子节点,就会出错。
所以有一个办法:在更新的时候,如果我们明确知道了该节点的儿子节点涉及到了将要更新的区间,就事先把它的左右儿子节点按照父节点的val更新了...
分类:
其他好文 时间:
2016-05-12 21:29:56
阅读次数:
163
题目大意及分析: 线段树成段更新裸题。 代码如下: ...
分类:
其他好文 时间:
2016-05-07 00:59:49
阅读次数:
133
别人跑几百毫秒 我跑 2500多 1 #include<cstdio> 2 #include<map> 3 //#include<bits/stdc++.h> 4 #include<vector> 5 #include<stack> 6 #include<iostream> 7 #include<a ...
分类:
其他好文 时间:
2016-04-15 21:30:46
阅读次数:
238
题目链接:http://codeforces.com/problemset/problem/242/E 给你n个数,m个操作,操作1是查询l到r之间的和,操作2是将l到r之间的每个数xor与x。 这题是线段树成段更新,但是不能直接更新,不然只能一个数一个数更新。这样只能把每个数存到一个数组中,长度大 ...
分类:
其他好文 时间:
2016-04-08 22:59:40
阅读次数:
389
题目链接:http://poj.org/problem?id=2777 题意是有L个单位长的画板,T种颜色,O个操作。画板初始化为颜色1。操作C讲l到r单位之间的颜色变为c,操作P查询l到r单位之间的颜色有几种。 很明显的线段树成段更新,但是查询却不好弄。经过提醒,发现颜色的种类最多不超过30种,所 ...
分类:
其他好文 时间:
2016-04-05 22:51:10
阅读次数:
208