lca
文章平均质量分 53
Clove_unique
All that you have lost can be won back bit by bit as long as you wish for it.
展开
-
倍增和LCA
倍增和LCA现在终于可以写这篇文章了,拖了很久没有学的倍增在去NOIP2015打酱油之前终于初步学习完。再次特别声明十分感谢fye的帮助,生命中第一篇倍增和LCA就是以她的代码为模板的,并且应该会一直延续下去。。。= = 【倍增是什么】 顾名思义,倍增就是根据已经得到的信息,将考虑的范围扩大一倍,从而加速操作的一种思想。 【有关倍增的算法】 使用了倍增思想的算法有很多,包括归并排序、快速幂、原创 2015-10-24 20:33:37 · 1170 阅读 · 0 评论 -
[Codeforces291E]Tree-String Problem(hash+倍增)
题目描述传送门题解可以将所有的字符串拆成一个一个的点,每一个点都只有一个字符 首先算出模式串的hash值 然后对于每一个点计算出从根到这个点形成的串的hash值 枚举每一个点,倍增求出与它的距离为模式串的长度的父亲,然后计算这一段的hash值 统计答案即可代码#include<algorithm>#include<iostream>#include<cstring>#include<c原创 2017-03-08 11:29:11 · 661 阅读 · 0 评论 -
[Codeforces208E]Blood Cousins(dsu on the tree+倍增)
题目描述传送门 题意:给出一棵家谱树,定义向上走k步到达的节点为该点的k-ancestor。每次询问与v同P-ancestor的节点有多少个。题解题目可以转化为在v的P-ancestor的子树里和v同一深度的有多少个点 用dsu on the tree搞一搞。。 倍增求出v的P-ancestor,然后对于每一个询问加一个链表,一遍dfs就行了。 注意这是一个森林 时间复杂度O(nlogn)原创 2017-03-07 19:30:21 · 869 阅读 · 0 评论 -
[BZOJ3910]火车(lca+树链剖分)
题解传送门题解lca+树链剖分裸题代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>using namespace std;#define N 500005#define sz 19int n,m,x,y,r,now,dfs_clock,a[N];int tot原创 2017-02-26 11:01:49 · 696 阅读 · 0 评论 -
[BZOJ2286][Sdoi2011]消耗战(虚树+lca+树形dp)
题目描述传送门题解裸的dp可以得到20pts 令f(i)表示将i点子树中所有关键点割掉的最小代价 那么若i为关键点,f(i)=i的父边权;若i不是关键点,f(i)=所有儿子的f之和 与 i的父边权取min那么对于所有的关键点和它们的lca造出一棵虚树,连的边为树链上所有边的最小值 同样的方法dp就行了代码#include<algorithm>#include<iostream>#inclu原创 2017-03-12 12:22:17 · 718 阅读 · 0 评论 -
[BZOJ3991][SDOI2015]寻宝游戏(dfs序+lca+set)
题目描述传送门题解答案其实就是将所有的点按照dfs序排序然后相邻求lca以及长度加和 奥还有第一个和最后一个求lca以及长度加和 用set维护一下。。。代码#include<algorithm>#include<iostream>#include<cstring>#include<cstdio>#include<cmath>#include<set>using namespace s原创 2017-03-12 21:55:34 · 728 阅读 · 0 评论 -
[BZOJ3572][Hnoi2014]世界树(虚树+树形dp+二分+lca)
题目描述传送门题解首先建出虚树来,边权即为原树上的距离 这题我dp的方法非常蠢 f(i)表示从i的父边出去(必须经过i的父亲)到达的关键点的最短路 fp(i)表示最短路的点 g(i)表示i到i的子树中到达的关键点的最短路 gp(i)表示最短路的点 然后这两个互相转移一下…dp完了之后枚举虚树上的每一条边(u,v) 因为已经知道了从u出去到关键点的最短路和从v出去到关键点的最短路 然后原创 2017-03-13 21:47:39 · 839 阅读 · 0 评论 -
SDOI2017 Round1 解题报告
Day1A product题意简述定义f(0)=0,f(1)=1,f(n)=f(n−1)+f(n−2)(n≥2)f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n\ge 2) 求∏i=1n∏j=1mf(gcd(i,j))\prod\limits_{i=1}^n\prod\limits_{j=1}^m f(gcd(i,j)) 多组数据,对109+710^9+7取模数据范围对10%原创 2017-04-12 07:43:21 · 1233 阅读 · 0 评论 -
[BZOJ3881][Coci2015]Divljak(AC自动机+dfs序+lca+bit)
题目描述传送门题解首先把所有的S串都丢到trie树里,建立fail树。 每加进来一个T,把它在AC自动机上暴力匹配,匹配到的每一个点在fail树中到根的路径上出现过的S串end标记的S串都应该+1,也就是说,每一次求出匹配到的每一个点在fail树中到根的路径上出现过的end标记表示的S串,然后取并集,这些S串的答案应该+1. 由于有可能有重复计算,我们需要把所有匹配过的点按照dfs序排序,然后要原创 2016-12-25 10:35:27 · 711 阅读 · 0 评论 -
[CodeForces519E]A and B and Lecture Rooms(lca)
题目描述传送门题意:求树上到某两点距离相等的点有多少个。题解如果这两个点不存在中点(距离不为偶数),答案显然为0。 由于树上的路径是唯一的,那么这x,y的中点一定满足条件,同时和这个中点相连的、并且到这个中点的路径不经过xy这条树链上的点都满足题意。那么我们可以用倍增求出这两个点的中点,然后用size什么的计算一下就行了。 注意根据xylca的位置要分情况讨论,细节不少,所以一定要写对拍!!!代原创 2016-10-30 15:04:37 · 684 阅读 · 0 评论 -
[BZOJ4390][Usaco2015 dec]Max Flow(树上差分+lca)
无论多么艰难,都要继续向前,因为只有你放弃的那一刻,你才输。原创 2016-08-25 17:11:11 · 1373 阅读 · 0 评论 -
[BZOJ1602][Usaco2008 Oct]牧场行走(LCA)
路,就是书。原创 2016-04-02 17:03:16 · 827 阅读 · 0 评论 -
[BZOJ1787][AHOI2008]Meet 紧急集合(LCA)
你可以接受不属于你的好东西,那也可以接受不属于你的坏东西。原创 2016-04-02 17:54:10 · 662 阅读 · 0 评论 -
[NOIP2013][CODEVS3287]货车运输(kruskal+树上倍增)
身居闹市而自辟宁静,固守自我而品尝尘嚣,无异众生而回归一己,保持高贵而融入人潮。原创 2016-04-02 18:47:34 · 847 阅读 · 0 评论 -
[BZOJ3732]Network(kruskal+树上倍增)
新技能get原创 2016-04-03 23:49:36 · 665 阅读 · 0 评论 -
[BZOJ4539][Hnoi2016]树(dfs序+主席树+lca)
将军有剑,不斩苍蝇。原创 2016-08-05 18:58:11 · 826 阅读 · 0 评论 -
[NOIP2012][CODEVS1218]疫情控制(二分+倍增+贪心)
以梦为马 以汗为泉 不忘初心 不负韶华原创 2016-08-23 18:47:03 · 2707 阅读 · 0 评论 -
[BZOJ3589]动态树(树链剖分+dfs序+lca)
The world is not so perfect. what do you want to get what you have to lose.原创 2016-09-24 07:34:45 · 1192 阅读 · 0 评论 -
[BZOJ4568][Scoi2016]幸运数字(高斯消元求线性基+lca+贪心)
题目描述传送门题解刚开始以为在树上先求出异或和了之后在线性基上搞一搞就行了,后来才知道这题牵扯到线性基的合并,YY了很久… 思路就是用倍增维护一段一段的线性基,然后求lca的过程中合并线性基就行了 这样的话时间复杂度是O(nlog3n)O(nlog^3n)?似乎有点不科学代码#include<algorithm>#include<iostream>#include<cstring>#inc原创 2017-01-14 09:32:22 · 536 阅读 · 0 评论