随笔分类 -  树链剖分

摘要:题目传送门 题目大意:给定一棵无根树,每个节点有自己的类别和权值,现在给定两个类别相同的点,叫你求这2点路径上同类别节点的权值和/最大权值。 节点类别与权值会改变。 解题思路:考虑对每一个类别开一棵线段树,动态开点,可以写指针,也可以开数组写链表,然后剩下的就是树剖的东西了。我写的是指针,跑的略慢一 阅读全文
posted @ 2017-04-30 17:41 Melacau 阅读(387) 评论(0) 推荐(0)
摘要:原题传送门 题意:给你一棵树,然后有一个遍历顺序,你需要补全这个遍历顺序,然后输出这个遍历顺序中每个点的出现次数。 解题思路:本来想找树剖的题,结果发现了一题可以直接写lca的。。。。 做法1:非常简单的NOIP式做法就是tjlca后直接树上差分即可。时间效率\( O(n) \)(常数较大).(BZ 阅读全文
posted @ 2017-04-28 09:54 Melacau 阅读(253) 评论(0) 推荐(0)
摘要:题意见试题传送门 解题思路:显然是题树剖题。 考虑用线段树维护区间端点颜色与颜色数,这样就可以方便的合并,注意查询的时候对端点的特殊处理即可。 时间效率最高为\( O (m \log^{2} n) \).(BZOJ 上 4072ms) 阅读全文
posted @ 2017-04-28 09:09 Melacau 阅读(257) 评论(0) 推荐(0)
摘要:原题传送门 题意: 给你一棵树,有2种操作: 1.使得某个点到根节点路径上的所有点权值赋为1。 2.使得某节点的子树中所有节点权值赋为0. 每次操作要求输出权值更改的节点个数。 解题思路: 显然是用树剖来解决问题,考虑用区间赋值的线段树维护区间内1的个数,然后直接按题意树剖求解即可。 操作1的时间效 阅读全文
posted @ 2017-04-26 11:00 Melacau 阅读(231) 评论(0) 推荐(0)
摘要:题目请自行查阅传送门。 典型的树剖题,线段树维护操作,记一下子树在线段树内范围即可。 时间复杂度:\( O(m \log^{2} n) \) 阅读全文
posted @ 2017-04-26 09:23 Melacau 阅读(165) 评论(0) 推荐(0)
摘要:接着找树剖的题。。。传送门(点我) 题意:给你一棵无根树,有三种操作:查询树上2点路径的点权和/最大点权;更改某点的点权。 解题思路:树链剖分裸题,我采用了常数较小的zkw线段树维护剖下来的树(毕竟线段树常数太大很危险),然后就是树剖的东西解决即可。 时间复杂度:期望:\( O(n \log \lo 阅读全文
posted @ 2017-04-25 16:50 Melacau 阅读(281) 评论(0) 推荐(0)
摘要:省选被暴虐,成功爆0。。。顺便ditoly差点全省总分Rank1 orz..... 于是开始赶进度学新算法。。。。 然后决定开始学习树剖orz。。。 发现树剖很好用啊!!!! 然后做了模板题。 题目就是给你一棵树,然后每次操作是查询或者增加一条树上2点路径/子树的值。 解题思路:都说了是树剖模板题, 阅读全文
posted @ 2017-04-25 10:49 Melacau 阅读(198) 评论(0) 推荐(0)