线段树区间更新
菜鸟之伤 __int64!!!!
#include
#include
#include
using namespace std;
const int maxn = 100050;
struct Tree{
int l, r, setv, sum;
}tree[maxn
int n;
__int64 sumn;
void...
分类:
其他好文 时间:
2015-08-21 17:11:11
阅读次数:
132
题意:要建n个高楼,给出了每个高楼的左右区间和高度,问最后所有的高楼的轮廓包括了哪些点。
题解:这题好坑,用了n种姿势了还是一直wa,后来才直到必须加输入输出文件那句话才能过。。。用线段树存维护区间内最大值也就是高度,左右区间到1e9所以要离散化。因为维护的是每一段的最大值而不是点,所以划分左右子区间那里要把mid到mid+1也归到右子区间里。#include
#include...
分类:
其他好文 时间:
2015-08-21 13:34:32
阅读次数:
116
题意:要建n个高楼,给出了每个高楼的左右区间和高度,问最后所有的高楼的轮廓包括了哪些点。
题解:这题好坑,用了n种姿势了还是一直wa,后来才直到必须加输入输出文件那句话才能过。。。用线段树存维护区间内最大值也就是高度,左右区间到1e9所以要离散化。因为维护的是每一段的最大值而不是点,所以划分左右子区间那里要把mid到mid+1也归到右子区间里。#include
#include...
分类:
其他好文 时间:
2015-08-21 13:32:27
阅读次数:
125
Link: http://acm.hdu.edu.cn/showproblem.php?pid=5023 1 #include 2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 usi...
分类:
其他好文 时间:
2015-08-21 00:01:43
阅读次数:
334
题意:有n个操作,操作种类有A a b表示把区间[a,b]的值依次加1 2 … b-a+1,操作B a b表示把区间[a,b]的值依次加b-a+1… 2 1,操作C a b x表示把区间[a,b]的值全部替换为x,操作S a b要求输出区间[a,b]里的所有数字的和。
题解:A和B操作都是把区间内加上一个等差数列,所以要用线段树维护每个区间所要加的等差数列的首项还有公差,注意操作C里的x还可以取负...
分类:
其他好文 时间:
2015-08-20 20:57:57
阅读次数:
159
题意:有一个字符串全部由’(‘和’)’组成,然后有三种操作,query a b输出区间[a,b]字符串的括号序列是否合法,reverse a b把区间[a,b]字符串里所有’(‘替换成’)’,并且把所有’)’替换为’(‘,set a b c,把区间[a,b]的所有字符替换为c。
题解:明显是线段树,为了可以让线段树维护,判断一个字符串是否为合法括号,可以把所有的’(‘替换为-1,’)’替换为1,那...
分类:
其他好文 时间:
2015-08-20 06:49:03
阅读次数:
111
题意:有n棵树在水平线上,给出每棵树的坐标和高度,然后向左倒的概率和向右倒的概率,和为1,然后给出了m个蘑菇的位置,每个蘑菇都有一个魔法值,如果蘑菇被压死了,也就是在某棵树[a[i] - h[i], a[i]) 或 (a[i], a[i] + h[i]]范围内,魔法值就没有了,只有生存下来的蘑菇才有魔法值,问生存下来的蘑菇的魔法值的期望。
题解:可以看到n和m的范围是1e5,而坐标范围是1e9,所...
分类:
其他好文 时间:
2015-08-17 19:36:44
阅读次数:
129
题意:有n个球,1~n,n个操作:(a,b),意思是把区间[a,b]里的球都涂一遍色,n次操作后,问每个球分别被涂了多少次。
分析:
区间更新,单点查询。一般区间更新都要用lazy[rt],不然对线段树的更新操作就退化为了暴力更新,会超时。
代码:
#include
#include
#include
using namespace std;
const int maxn=100000;
...
分类:
其他好文 时间:
2015-08-17 19:32:31
阅读次数:
141
题意:给一个n,代表n次操作,接下来每次操作表示把[l,r]区间的线段涂成k的颜色其中,l,r,k的范围都是0到8000
分析:其实就是拿线段树维护一段区间的颜色,总体用到的是线段树的区间更新把,但是会给人一种区间合并的错觉
注意:这题比较坑的是千万不能拿n建树,不然就会segmentation fault,必须拿8000建树,也就是树是固定的
代码:
#inclu...
分类:
其他好文 时间:
2015-08-17 17:26:14
阅读次数:
137
题意:一段挂钩分成n段,每一段可以由铜、银、金做成,对应的价值分别是1,2,3,现在有m个操作(a,b,x)意思是改变区间[a,b]段的钩子为材质x,问m个操作之后这段挂钩的价值总和。挂钩的每一段初始为铜,也就是1。
分析:
区间更新,单点查询。确切的说是区间替换,询问总区间总和。线段树的典型应用之一。因为是区间更新,所以用 lazy[rt] 数组记录当前子树是否曾经更新过,lazy[rt]!...
分类:
其他好文 时间:
2015-08-17 06:34:25
阅读次数:
132