随笔分类 - 树--------------------------
摘要:【题目】 "51Nod 1273 旅行计划" 【题意】给定n个点的树和出发点k,要求每次选择一个目的地旅行后返回,使得路径上未访问过的点最多(相同取编号最小),旅行后路径上所有点视为访问过,求旅行方案。$n,k \leq 5 10^4$。 【算法】贪心 首先显然是访问所有叶子节点,先按叶子节点深度从
阅读全文
摘要:【题目】 "BZOJ 1095" 【题意】给定n个黑白点的树,初始全为黑点,Q次操作翻转一个点的颜色,或询问最远的两个黑点的距离,$n \leq 10^5,Q \leq 5 10^5$。 【算法】括号序列+线段树 【题解】参考: "konjac" 括号序列其实就是入栈出栈序,每个点在进入时加左括号和
阅读全文
摘要:【题意】阿狸喜欢收藏各种稀奇古怪的东西,最近他淘到一台老式的打字机。打字机上只有28个按键,分别印有26个小写英文字母和'B'、'P'两个字母。 经阿狸研究发现,这个打字机是这样工作的: l 输入小写字母,打字机的一个凹槽中会加入这个字母(这个字母加在凹槽的最后)。 l 按一下印有'B'的按键,打字
阅读全文
摘要:【参考】★t14t41t(感谢!) 【题意】给定带正边权简单无向图,每次操作删除一条边或者询问两点间最小的 [ 简单路径上边的最大值 ]。n,q<=10^5,m<=10^6。 【题解】题目询问的是两点间的最小瓶颈路,答案一定在原图的最小生成树上,于是本题就变成了动态维护删边最小生成树。 然而Link
阅读全文
摘要:【题意】给定n个点的树,每条边有一个小写字母a~v,求每棵子树内的最长回文路径,回文路径定义为路径上所有字母存在一种排列为回文串。n<=5*10^5。 【算法】dsu on tree 【题解】这题经典套路就是按照22个字母个数的奇偶性压位,然后两段路径异或起来是0或1<<j就是合法路径。 dsu的时
阅读全文
摘要:【题目】E. Lomsat gelral 【题意】给定n个点的树,1为根,每个点有一种颜色ci,一种颜色占领一棵子树当且仅当子树内没有颜色的出现次数超过它,求n个答案——每棵子树的占领颜色的编号和Σci(一棵子树可能有多种占领颜色)。1<=n,ci<=10^5。 【算法】dsu on tree 【题
阅读全文
摘要:【题意】参考PoPoQQQ。 给定一棵树,每个点有一个点权,提供四种操作: 1.删除两点之间的连边 不存在边则无视 2.在两点之前连接一条边 两点已经联通则无视 3.在两点之间的路径上所有点的点权加上一个数 两点不连通则无视 4.询问两点之间路径上任选两点路径上的点权和的期望值 【算法】Link-C
阅读全文
摘要:【题目】2017"百度之星"程序设计大赛 - 初赛(A) 【题意】给定n个点的带边权树,m条编号1~m的路径,Q次询问编号区间[L,R]所有链的交集的长度。n<=500000。 【算法】线段树+RMQ-LCA+树链的交 【题解】树链的交:记一条链为(a1,b1),LCA为c1。另一条链为(a2,b2
阅读全文
摘要:【题目】D. Best Edge Weight 【题意】给定n个点m条边的带边权无向连通图,对每条边求最大边权,满足其他边权不变的前提下图的任意最小生成树都经过它。n,m<=2*10^5,1<=wi<=10^9。 【算法】最小生成树+倍增LCA+并查集 【题解】首先求出图的一个最小生成树M,则所有边
阅读全文
摘要:【题意】给定n个数字ai,表示大爷落到i处会被弹飞到i+ai处,弹飞到>n或<1处则落地。m次操作,修改一个ai,或询问大爷落到x处经过几次落地(或-1)。n,m<=10^5,|ai|<=n。 【算法】Link-Cut Tree 【题解】n个点n条出边,构成了神奇的基环内向森林。将落地视为第n+1个
阅读全文
摘要:【题意】给定n个点的树,每个点初始权值为1,m次操作:1.x到y的点加值,2.断一条边并连一条边,保证仍是树,3.x到y的点乘值,4.x到y的点权值和取模。n,m<=10^5。 【算法】Link-Cut Tree 【题解】区间加和区间乘标记的处理:【BZOJ】1798: [Ahoi2009]Seq
阅读全文
摘要:【题意】给定n个点和m个操作,每次操作:1.连接2个点。2.断开2个点。3.查询2个点是否连通。m<=2*10^5。 【算法】Link-Cut Tree 【题解】LCT模板题,Link,Cut,和查询两个点的root是否相同。 #include<cstdio> #include<cstring> #
阅读全文
摘要:【题意】给定n个点的树,m次询问,每次给定ki个特殊点,一个点会被最近的特殊点控制,询问每个特殊点控制多少点。n,m,Σki<=300000。 【算法】虚树+倍增 【题解】★参考:thy_asdf 对询问建立虚树,然后DFS统计虚树上每个点被哪个点控制,记为belong[x]。 统计的方法是从下往上
阅读全文
摘要:【题意】给定n个点的带边权树,对于树上存在的若干特殊点,要求任选一个点开始将所有特殊点走遍后返回。现在初始没有特殊点,m次操作每次增加或减少一个特殊点,求每次操作后的总代价。n,m<=10^5。 【算法】虚树+DFS序+set 【题解】每次询问相当于求两倍虚树路径和。 模拟虚树上dfs序的转移会发现
阅读全文
摘要:【题意】给定n个点的带边权树,每次询问给定ki个特殊点,求隔离点1和特殊点的最小代价。n<=250000,Σki<=500000。 【算法】虚树+DP 【题解】考虑普通树上的dp,设f[x]表示隔离1和子树x内特殊点的最小代价,val[x]表示x到1路径上的最小代价(预处理)。 点x特殊,f[x]=
阅读全文
摘要:【题目】E. Palindromes in a Tree 【题意】给定一棵树,每个点都有一个a~t的字符,一条路径回文定义为路径上的字符存在一个排列构成回文串,求经过每个点的回文路径数。n<=2*10^5。 【算法】点分治 【题解】状压20位的二进制表示一条路径的字符状态,点分治过程中维护扫描过的路
阅读全文
摘要:【题意】给定带边权树,求两点距离<=k的点对数。n<=40000。 【算法】点分治 【题解】对于一个区域,选择其重心x作为根,则划分出来的每棵子树都是子区域,可以证明至多划分log n次(通过vis[]划分区域)。每次划分所有点都扫描一次,所以仅遍历的复杂度是O(n log n)。 对于本题,将点x
阅读全文
摘要:【题意】给一棵树,每条边有权.求一条简单路径,权值和等于K,且边的数量最小.N <= 200000, K <= 1000000。注意点从0开始编号,无解输出-1。 【算法】点分治 【题解】每个区域按重心x划分子树,一条经过x的路径是从一个子树到另一个子树的(从x出发记为深度0即可),那么就让子树i的
阅读全文
摘要:【题意】给定带边权仙人掌图,Q次询问两点间最短距离。n,m,Q<=10000 【算法】圆方树处理仙人掌问题 【题解】树上的两点间最短路问题,常用倍增求LCA解决,考虑扩展到仙人掌图。 先对仙人掌图建圆方树,圆圆边和原图边权一致。对于每个方点代表的环,记深度最小的点为x,则圆方边的边权是圆点到x的最短
阅读全文