![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
树链剖分
凶残的带毛馒头
帅哥
展开
-
GSS7 - Can you answer these queries VII 线段树
做了4个小时,思考一小时,打代码20分钟,调试2个半小时没看题解,自己意淫的做法,习惯数组版的线段树,所以没办法像结构体一样返回多个参数,故用引用返回需要的知识:树剖,最近公共祖先,最大子段和变量:mx:最大子段和,lg:区间左起的最大和,rg:区间右起的最大和,sum:区间和,tag:区间修改标记一.树剖,基本操作void dfs1(int x,int pre){ fa[x]=pre; dep[x]=dep[pre]+1; sz[x]=1; int mxson=-1; fo原创 2022-04-20 08:51:45 · 122 阅读 · 0 评论 -
洛谷P2486 [SDOI2011]染色
思路很简单,实现细节有点多,做了两个半小时。学过树链剖分一眼就能看出来。先树链剖分把图建好,线段树维护链,lg,rs表示每个区间的左右端点颜色,seg表示区间颜色段数,tag是染色标记。id是树链上点的编号,W(大写)是树链上点的编号对应的颜色,w(小写)是树链的线段树上叶子的颜色。#include <bits/stdc++.h>#define mid (l+r)/2#define ls (k<<1)#define rs (k<<1|1)using原创 2022-04-18 08:48:31 · 101 阅读 · 0 评论