dfs序和树链剖分
zlc1114
菜鸡+口胡选手
展开
-
dfs序入门 CF上的几道题
dfs序就是把一个点的所有子节点映射到某个连续子区间来进行一定操作,用线段树或者其他做法降低时间复杂度,和树链剖分类似(当然要更简单)由于我太菜了,做了好几道题终于感觉自己算是入门了第一题:CF 343D(线段树时间戳)三个操作: 1 v:把v和v的所有儿子染色 2 v:把v和v的所有父亲取消染色 3 v:查询某个节点颜色 做法:利用染绿色的性质,如果某个节点在某个时间t1被染绿,在时间t2原创 2017-04-30 22:43:52 · 444 阅读 · 0 评论 -
HDU5052 树链剖分
题目:HDU5052我做的第一道不全算是模板题的树链剖分题(不会LCT),题目题意很清晰,维护很恶心 题意是这样: 给出一颗树,给出节点上的值和边,每次询问从u到v的过程中先走的值和后走的值的差值(后减先)的最大值,如果为负就输出0,在这个之后把这一段全都加上某个数字k 用线段树维护一堆值,mxr是往右走的最大利润,mxl是往左走的最大利润,mx是最大值,mn是最小值,lazy保存的是往原创 2017-05-02 20:36:37 · 305 阅读 · 0 评论 -
POJ2763 树链剖分
题目:POJ2763单点修改,区间查询(对边进行操作) 0是查询从当前点到某个点的路程 1是修改某条边的值 建好树以后把每个边赋到它下面那个节点处就行了 貌似得手工扩栈,我也没扩栈 这道题好像卡vector,我用vector写的3600+ms,这个邻接表写的1000+ms#include <cstdio> #include <iostream> #include <algorithm> #原创 2017-04-30 20:36:57 · 212 阅读 · 0 评论 -
HDU3966 树链剖分
题目:HDU3966题意:一棵树上每个节点有一些值,三个操作(其实是俩) 操作I是增加一条链所有点的值 操作D是减少一条链所有点的值 操作Q是查询某个点的值 网上说得手工扩栈,我没扩栈也A掉了//#pragma comment(linker, "/STACK:1024000000,1024000000") #include <cstdio> #include <iostream> #incl原创 2017-04-30 19:49:03 · 203 阅读 · 0 评论 -
HDU4718 树链剖分
题目:HDU4718我正在强行骗自己会树剖了 原来的blog树剖写的有点错误(在dfs1求son那里),现已改正 给出一棵树和树上权值,求从u到v的最长连续上升子序列长度 很坑爹。。线段树上维护了8个值。。我还维护了一个len来辅助维护这些值。。 常数很大很大很大。。。。 这一坨东西,尤其是update改的我都要疯了。。细节写错了一个地方,结果对拍debug了三个小时#include <c原创 2017-05-03 23:39:48 · 300 阅读 · 0 评论