随笔分类 -  D-树======================

摘要:Link: BZOJ 4719 传送门 Solution: 感觉求LCA又有了新姿势啊:$Tarjan$离线$O(n+m)$ 每次递归返回时将子树和父节点合并,如果询问节点已访问过则LCA就是已合并的最高节点 这题部分分提示非常多啊 首先要将路径拆为$(S,LCA),(LCA,T)$ 发现如果$(S 阅读全文
posted @ 2018-09-28 14:09 NewErA 阅读(151) 评论(0) 推荐(0)
摘要:Link: BZOJ 2243 传送门 Solution: 基础树剖,但要注意的就是链合并时的边界问题 每次查询时发现当前区间为目标区间的边界时直接记录边界的值即可 注意最后一次两个边界都要考虑! Code: 阅读全文
posted @ 2018-09-26 11:04 NewErA 阅读(140) 评论(0) 推荐(0)
摘要:Link: P2664 传送门 Solution: 一道非常不错的计算贡献的题目 此类计算树上所有点对间结果的题目首先考虑点分治,同时一般都是对每种颜色计算贡献 那么对于每层点分治,需要计算其它点对分治中心的贡献和经过分支中心的路径对其它每个点的贡献 考虑颜色$k$,如果一个颜色为$k$的节点$v$ 阅读全文
posted @ 2018-08-26 19:29 NewErA 阅读(748) 评论(0) 推荐(0)
摘要:Link: Codeforces #196 传送门 A: 枚举 #include <bits/stdc++.h> using namespace std; #define X first #define Y second typedef long long ll; typedef pair<int, 阅读全文
posted @ 2018-08-23 11:52 NewErA 阅读(191) 评论(0) 推荐(0)
摘要:Link: P3806 传送门 Solution: 询问树上是否存在两点间的距离为$k$,共有$m$次询问($m\le 100,k\le 1e7$) 预处理出所有距离的可能性再$O(1)$出解的复杂度为$O(n^2*log(n))$,明显TLE(但好像并不会) 而如果直接在线处理要分治$m$次,找$ 阅读全文
posted @ 2018-07-13 09:12 NewErA 阅读(216) 评论(0) 推荐(0)
摘要:Link: POJ 1741 传送门 Solution: 此题的难点在于点分治上的统计 如果依然采取每棵子树的结果与之前所有子树的结果合并的方式会比较麻烦 同时复杂度可能超过$O(n*log(n))$的限制 其实可以用一个简单的容斥来在$O(n*log(n))$统计结果: 先将所有点到重心的距离排序 阅读全文
posted @ 2018-07-13 08:43 NewErA 阅读(118) 评论(0) 推荐(0)
摘要:Link: BZOJ 2152 传送门 Solution: 直接上点分治就行了(其实也可以树形$dp$) 其中对于穿过重心的边的统计类似于树形$dp$的计算方式: 将当前子树中模3分别为0/1/2的边与之前所有子树产生的边进行组合 Code: 阅读全文
posted @ 2018-07-13 07:12 NewErA 阅读(117) 评论(0) 推荐(0)
摘要:Link: BZOJ 4034 传送门 Solution: 树剖模板题…… Code: 阅读全文
posted @ 2018-07-12 08:40 NewErA 阅读(141) 评论(0) 推荐(0)
摘要:Link: AGC001 传送门 A: …… #include <bits/stdc++.h> using namespace std; long long res=0; int n,dat[500]; int main() { scanf("%d",&n); for(int i=1;i<=2*n; 阅读全文
posted @ 2018-07-02 13:08 NewErA 阅读(180) 评论(0) 推荐(0)
摘要:Link: BZOJ 3124 传送门 Solution: 对于第二问,要先推出几个性质: 1、这些边在一条直径上 2、这些边一定是连续的 这类性质主要就靠瞎蒙再用反证法证一证就好了 (证不出来感性认知一下就直接上吧) 接下来只要在任意一个直径上寻找连续的可行边即可 设直径的两个端点分别为$S,T$ 阅读全文
posted @ 2018-06-30 14:13 NewErA 阅读(212) 评论(0) 推荐(0)
摘要:Link: BZOJ 4117 传送门 Solution: 第一次写$Huffman Tree$相关,发现就是个合并果子? 此题可以将每一种情况的概率和排列总数算出,接下来就是按照$Haffman Tree$基本构造方式操作了 注意,这里使用了分治的思想: (1)如果排列总数大于1,先排除奇数影响, 阅读全文
posted @ 2018-06-28 21:56 NewErA 阅读(334) 评论(0) 推荐(0)
摘要:Link: BZOJ 1509 传送门 Solution: 一开始受样例影响又犯了想当然的毛病……图中的C点不一定在直径上! 3次$dfs$求出树的直径及直径的两个端点$rt1,rt2$到每个点的距离$d1,d2$, 则结果为$max\{ Diameter+min\{ d1[i],d2[i] \} 阅读全文
posted @ 2018-06-27 09:27 NewErA 阅读(186) 评论(0) 推荐(0)
摘要:Link: BZOJ 4031 传送门 Solution: 矩阵树定理的模板题 看完下面两篇文章就会啦: 周冬论文:https://wenku.baidu.com/view/872eb02de2bd960590c677c6.html WerKeyTom_FTD的严谨证明%%%:https://blo 阅读全文
posted @ 2018-06-05 22:18 NewErA 阅读(183) 评论(0) 推荐(0)
摘要:Link: BZOJ 3631 传送门 Solution: 这题一眼看上去是裸的树剖,但实际上完全没有必要进行区间加的操作 由于不需要在线的查询,我们可以直接用差分数组来解决此题 而这又有两种方式: 1、先轻重链剖分,按树剖更新时一样处理差分数组 对于每一条连续的部分执行$res[pos[top[x 阅读全文
posted @ 2018-05-31 22:12 NewErA 阅读(166) 评论(0) 推荐(0)
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2282 Solution: 看到球最大值最小 > 想到二分答案 首先要推导出一些性质: 1、这条路径一定在树的直径上 感性证明:直径上的每个点通向直径末端的路径都是这个方向从该点出发的最长距 阅读全文
posted @ 2018-05-30 08:50 NewErA 阅读(203) 评论(0) 推荐(0)
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=3083 Solution: 算是一道树剖的模板题吧 除了模板以外,新增的操作就是“换$root$” 此时我们分类讨论即可: 1、$x={root}$ 查询$[1,n]$ (需要特判) 2、$ 阅读全文
posted @ 2018-05-29 22:26 NewErA 阅读(142) 评论(0) 推荐(0)
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=2657 Algorithm: 可以发现一个性质:任意两个三角形之间只可能有一种路径 任意两点只有一条路径 > 树 因此我们将每个三角形看成一个点,建树,找最长链即可(最后记得+1) 正好再巩 阅读全文
posted @ 2018-05-21 15:45 NewErA 阅读(217) 评论(0) 推荐(0)
摘要:Link:https://www.lydsy.com/JudgeOnline/problem.php?id=1912 Algorithm: K=0:res=(n-1)*2 每条边恰好走2遍 K=1:res=res-树上最长链+1 由于每形成环,环上的边对答案的贡献都会-1,因此只要将树上最长链连成环 阅读全文
posted @ 2018-05-19 10:00 NewErA 阅读(195) 评论(0) 推荐(0)
摘要:[Codeforces 19E] Fairy 阅读全文
posted @ 2018-05-14 10:19 NewErA 阅读(481) 评论(0) 推荐(0)