[SDOI2016]游戏(luogu) Solution 对于一次Alice的操作,设 lca 为 s , t 的 LCA ,dis [ i ] 为点 i 到根的路径长度 则 s 到 lca 的路径上每个点 i 添加一个数字 $$-a*dis\left[i\right]+(a*dis\left[s\ ...
分类:
其他好文 时间:
2020-03-18 09:33:18
阅读次数:
63
这道题的我们知道如果在两个点之间有附加边,其实就相当于在这个回路上的每条边都权值+1,这样就可以通过差分数组来快速求取大小 这里的精髓就是在输入的两个位置+1,而在他们的lca上-=2; #include<iostream> #include<queue> #include<map> #includ ...
(1)组件数据 组件的data必须是一个函数。 (2)单文件组件文件名称 单文件组件的文件名应该要么始终是单词大写开头 (PascalCase),要么始终是横线连接 (kebab-case)。 (3)紧密耦合的组件名 和父组件紧密耦合的子组件应该以父组件名作为前缀命名。 (4)自闭合组件 在单文件组 ...
分类:
其他好文 时间:
2020-03-14 16:27:17
阅读次数:
55
虚树,顾名思义,就是假的树. 在树形dp中有很大的优化作用. 虚树主要针对于树中关键点的询问.我们仅仅对关键点及其lca建一棵树.这样只要保证sigmak在时间复杂度内即可. 以下是建树的模板 q=read(); for(int i=1;i<=q;++i) { num=read(); for(int ...
分类:
其他好文 时间:
2020-03-14 12:36:13
阅读次数:
50
https://www.cnblogs.com/lbssxz/p/11114819.html 1 #include<cstdio> 2 #include<iostream> 3 using namespace std; 4 const int maxn=1e5+10; 5 int n,m,s,num ...
分类:
其他好文 时间:
2020-03-13 13:16:19
阅读次数:
44
题目链接:https://www.luogu.com.cn/problem/P3258 题意:给出一个n 再给出走这n个点的顺序,再给出这n个点的连接方式(n-1条边,形成树) 思路:我们考虑lca+树上差分,首先介绍一下树上差分; 树上差分:想法跟普通的差不多,举个例子:假如我们要在某节点以及其到 ...
分类:
其他好文 时间:
2020-03-13 13:03:06
阅读次数:
50
"原题链接" 首先如果不考虑数据范围,珂以想到一个贪心:每一次询问的$u,v$,设它们的最近公共祖先为$lca$,若当前的$u,v$有一条$u\rightarrow v$的路径,就直接按这个路径跑;否则尽量往$lca$上跑。如果跑不动了,而且也没有$u\rightarrow v$的路径,就不能到达。 ...
分类:
其他好文 时间:
2020-03-12 23:48:46
阅读次数:
116
这篇文章笔者想总结一下LCA的做法 LCA即最近公共祖先它所要求的是树上任意两个结点的公共祖先 下面提供做法 1、暴力法: 即一层一层往上爬,给定两个结点,先将两个结点的深度调为一致后,一起一层层的向上爬上升,这种做法的时间复杂度为较大,很容易被卡掉,这里就不详细说明,只是放出代码 #include ...
分类:
其他好文 时间:
2020-03-12 15:58:24
阅读次数:
87
题: 题意:给一棵树,每个节点有权值。每次询问要求回答一个值XOR某条路径上的一个点的最大值。 分析:我们在学可持续化01字典树时,写的模板题是支持区间查询的,插入一个数是pre是和u-1之间建立,那么在树上这个关系就是父亲与儿子的关系建立可持续化01字典树; 然后查询久查询[fa[lca[x,y] ...
分类:
其他好文 时间:
2020-03-11 19:46:29
阅读次数:
56
题意 给一棵树,每个节点有权值。每次询问要求回答一个值异或某条路径上的一个点的最大值。 思路 我们可以对每一个点开一个字典树,记录从这个点到根的路径上的所有数,然后求两点的LCA,然后把路径分成左端点到LCA的路和右端点到LCA的路来做。 ...
分类:
其他好文 时间:
2020-03-11 00:58:21
阅读次数:
47