摘要: 题意:给定一棵树,维护:1、删除一条边 2、添加一条边 3、询问u和v是否连通 题解:LCT维护连通性 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> u 阅读全文
posted @ 2017-02-26 13:56 WDZRMPCBIT 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个长度为N的数列,每个元素有一个权值w[i],表示从i出发能到i+w[i],如果结果大于N则结束,维护:1、从i出发能转移多少次 2、修改w[i] 题解:建树,在i(儿子)和i+w[i](父亲)之间连边,大于N直接连到虚根上,每次询问直接查找i到根节点路径上的点数。因为边的连接情况是动态 阅读全文
posted @ 2017-02-26 13:53 WDZRMPCBIT 阅读(106) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一个树,维护:1、u到v是否有必胜策略 2、将u的权值修改为w 题解:BFS版的树链剖分 #include <cstdio> #include <cstring> #include <cstdlib> #include <iostream> #include <algorithm> usi 阅读全文
posted @ 2017-02-26 13:48 WDZRMPCBIT 阅读(127) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树,每次询问给出l r z,求在[l,r]区间内的每个节点i与z的最近公共祖先的深度之和 题解: 显然,暴力求解的复杂度是无法承受的。 考虑这样的一种暴力,我们把 z 到根上的点全部打标记,对于 l 到 r 之间的点,向上搜索到第一个有标记的点求出它的深度统计答案。观察到,深度其实就是 阅读全文
posted @ 2017-02-26 13:42 WDZRMPCBIT 阅读(116) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树,维护:1、将u的种类改为c 2、将u的权值改为w 3、求u到v路径上种类为c的点的点权和 4、求u到v路径上种类为c的点的最大点权 题解:每个宗教建一颗线段树,然后随便做……考虑到如果把每一棵线段树都建完全会MLE,所以我们开动态内存。因为给出的评级都是正整数,所以如果一个区间的和 阅读全文
posted @ 2017-02-26 13:36 WDZRMPCBIT 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树,维护:1、将a到b路径上所有的点染为c 2、求a到b路径上颜色段的数量。 题解:区间颜色段数=左区间颜色段数+右区间颜色段数-(左区间最右边的颜色==右区间最左边的颜色),用线段树来维护。 #include <cstdio> #include <cstring> #include 阅读全文
posted @ 2017-02-26 13:32 WDZRMPCBIT 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树,维护:1、将u的权值修改为v 2、求u到v路径上的最大权 3、求u到v路径上的点权和 题解:树链剖分裸题 #include <cstdio> #include <climits> #include <cstring> #include <cstdlib> #include <ios 阅读全文
posted @ 2017-02-26 13:24 WDZRMPCBIT 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题意: 给定N个操作,每种操作的格式为: 1、+a:表示将当前的结果加上a 2、-a:表示将当前的结果减去a 3、*a:表示将当前的结果乘以a 4、@a:表示将当前的结果加上a*X(X是一开始JYY输入的数) 在操作中,如果结果>R,则结果=R;如果结果<L,则结果=L。给定M个xi,求每个x在经过 阅读全文
posted @ 2017-02-26 13:20 WDZRMPCBIT 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 题意:给定一棵树,维护:1、一个节点+x 2、一个子树所有节点+x 3、求x到根的路径和 题解:先跑出DFS序,那么一个节点的子树就是这个节点在DFS序中两次出现之间的节点,设s[i],e[i]为i第一次出现和第二次出现的位置,用线段树来维护求和,借鉴差分的思想,那么线段树中s[i]所对应的节点的权 阅读全文
posted @ 2017-02-26 13:13 WDZRMPCBIT 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题意:给定N个矩形,求复数个矩形所覆盖的面积和 题解: 首先我们离散化,然后按照纵坐标从下往上扫,每扫到一条边,就把这条边的边权压入线段树——规定始边边权为1,终边边权为-1 每次从下往上枚举一条边,将每两个坐标之间的间隔看成是一个点,每次枚举看那个间隔权值>1,统计下来,乘以两条边之间的距离。 当 阅读全文
posted @ 2017-02-26 13:06 WDZRMPCBIT 阅读(228) 评论(0) 推荐(0) 编辑