虚树
DZYO
Never stop
展开
-
BZOJ2286: [Sdoi2011]消耗战(虚树)
传送门题意: 一棵树上每条边有权值,每次选k个点,并求断开一号节点到该点的最小代价。题解: 虚树。 建树后树上dp.#include<bits/stdc++.h> using namespace std; typedef long long ll; streambuf *ib,*ob; inline int read() { char ch=ib->sbumpc();int i=0,f原创 2017-09-06 20:36:02 · 299 阅读 · 0 评论 -
BZOJ3572: [Hnoi2014]世界树(虚树)
传送门题意: 一棵树,每次给k个控制点,求每个控制点能控制几个点。(一个点被离它最近的控制点控制)。题解: 虚树。 首先建出虚树,考虑怎么dp。首先要dp出离每个虚树上的点最近的点。 dp两次即可。一次找子树,一次找父亲。其次,对于虚树的根节点,根节点以外的其他所有不在虚树中的点被离虚树中的根节点最近的点控制。对于虚树中的任意一条路径,倍增求出原树种这条路径上离现在的点最近的点。如果这条路径原创 2017-09-07 11:27:56 · 371 阅读 · 0 评论 -
NOI模拟:Death(虚树)
题意: 小 F 堕入了梦魇的世界,一只巨大的魔爪,或者说,一棵根节点为 1 的有根树,每个节点有 一个危险值 wiwiw_i 。 小 F 不会自己从梦境中醒来,她要在梦境中切断自己与梦魇的联系,才能逃离这个世界。 每次,小 F 都是从 1 号节点进入这个世界。 她要去编号为x1,x2...xkx1,x2...xk x_1 ,x_2 ...x_k 的节点上切断联系。 ...原创 2018-03-27 07:37:09 · 287 阅读 · 0 评论 -
BJ模拟:最长公共前缀(SAM+虚树)
传送门 题意: BZOJ3879的树上版本。 题解: 实际上我们也可以维护后缀数组做,只需要多一个后缀平衡树。 不过这道题建广义SAM更方便,因为Trie树上所有节点到根的路径都是后缀,我们只需要把SAMSAMSAM建出来即可得到后缀树,两个串的lcp为在后缀树上的lca的长度,然后每次询问建虚树DPDPDP即可。 不过需要注意的是trie树上建SAMSAMSAM的复杂度是错的,所以还...原创 2018-04-10 10:51:47 · 439 阅读 · 0 评论 -
LOJ#2339. 「WC2018」通道(边分治+虚树)
传送门 题解: 考虑两棵树怎么做,要求maxd1(x)+d1(y)−2∗lca1(x,y)+dis2(x,y)\max d_1(x)+d_1(y)-2*lca_1(x,y)+dis_2(x,y)maxd1(x)+d1(y)−2∗lca1(x,y)+dis2(x,y),把x′x&amp;amp;#x27;x′挂在xxx下面,长度为d1(x)d_1(x)d1(x),然后就是max−2∗lca1(...原创 2018-10-07 16:12:13 · 229 阅读 · 0 评论 -
UOJ#397. 【NOI2018】情报中心(线段树合并+虚树)
传送门 题解: WC,CTSC二合一真TM爽。 两种路径的最大值分开求: 1.lca不同,此时枚举相交的链中较下面的点,然后贡献可以线段树合并。 2.lca相同,此时可以建虚树,然后变成和CTSC一样的问题。 时间复杂度O(nlogn)O(n \log n)O(nlogn)。 #include <bits/stdc++.h> using namespace std; typedef ...原创 2018-10-08 22:18:24 · 579 阅读 · 0 评论 -
UOJ#271. 【清华集训2016】连通子树(虚树+倍增)
传送门 题解: 注意到每种颜色个数比较少,于是建出虚树后暴力背包,用倍增维护一下虚链上的DP值即可。 所以说你只需要5个倍增数组和一些卡常技巧加上无数的小细节就可以通过这道题了。 不说了我去睡觉了。 #include <bits/stdc++.h> using namespace std; typedef pair <int,int> pii; const int RLEN...原创 2018-11-03 01:24:06 · 1049 阅读 · 0 评论