
虚树
_beginend
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【洛谷P6199 [EER1]河童重工】【点分治+虚树】
题意 给出两棵树T1,T2T_1,T_2T1,T2,定义新图中两个点的距离为dis1(i,j)+dis2(i,j)dis_1(i,j)+dis_2(i,j)dis1(i,j)+dis2(i,j),其中disk(i,j)dis_k(i,j)disk(i,j)表示在TkT_kTk中iii到jjj的距离。求新图的最小生成树。 n≤100000n\le 100000n≤100000 分析 先对...原创 2020-03-09 15:38:53 · 515 阅读 · 0 评论 -
bzoj 2286: [Sdoi2011消耗战 虚树+树形dp
题意在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达。现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望。已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是炸毁一些桥梁,使得敌军不能到达任何能源丰富的岛屿。由于不同桥梁的材质和结构不同,所以炸毁不同的桥梁有不同的代价,我军希望在满足目标的同时使得总代价原创 2016-12-14 21:41:10 · 518 阅读 · 0 评论 -
bzoj 3611: [Heoi2014]大工程 虚树+树形dp
题意国家有一个大工程,要给一个非常大的交通网络里建一些新的通道。 我们这个国家位置非常特殊,可以看成是一个单位边权的树,城市位于顶点上。 在 2 个国家 a,b 之间建一条新通道需要的代价为树上 a,b 的最短路径。 现在国家有很多个计划,每个计划都是这样,我们选中了 k 个点,然后在它们两两之间 新建 C(k,2)条 新通道。 现在对于每个计划,我们想知道: 1.这些新通道的代价原创 2016-12-15 20:58:44 · 378 阅读 · 0 评论 -
bzoj 3991: [SDOI2015]寻宝游戏 dfs序+虚树+set
题意给出一棵树,每次操作会把一个点放入宝藏或把宝藏拿走,每次操作完后问从任意一个点开始遍历所有宝藏点最后回到起点的最短路径。 n,m<=100000分析一开始想到树剖上面去了。。。其实那个距离就是虚树中任意两点间的距离和*2 同时等于把虚树所有点按照dfs序排好之后相邻两点的距离和加上起点到终点的距离和。 用一个set暴力维护即可。代码#include<iostream> #include<c原创 2017-03-28 21:19:15 · 414 阅读 · 0 评论 -
bzoj 3879: SvT 后缀自动机+虚树+树形dp
题意有一个长度为n的仅包含小写字母的字符串S,下标范围为[1,n]. 现在有若干组询问,对于每一个询问,我们给出若干个后缀(以其在S中出现的起始位置来表示),求这些后缀两两之间的LCP(LongestCommonPrefix)的长度之和.一对后缀之间的LCP长度仅统计一遍. 有S<=5*10^5,且Σt<=3*10^6.分析我们把S反过来后建后缀自动机,就转换成了求两两前缀的lcs。显然两个前缀原创 2017-11-09 17:02:18 · 653 阅读 · 0 评论 -
Codeforces 613D Kingdom and its Cities 虚树+树形dp
题意 给出一棵树,每次询问会给出几个关键点,要求选最少的非关键点使得把选的点去掉后关键点之间两两不能到达。 n≤100000n≤100000n\le100000 分析 先把虚树建出来,然后树形dp一下就好了。 具体来说就是设f[x,0]表示x的子树中的关键点两两不可达且没有关键点可以到达x外面,f[x,1]则表示有至多一个关键点可以到达x外面。转移的话讨论一下就好了。 代码 ...原创 2018-04-18 20:43:53 · 276 阅读 · 0 评论 -
LibreOJ #2562.「SDOI2018」战略游戏 圆方树+虚树
题意 给出一个n个点m条边的无向图,每次询问给出一个点集V,问有多少个点满足不属于V且在去掉该点后点集V中的点不连通。 n≤105,m≤2∗105n≤105,m≤2∗105n\le10^5,m\le2*10^5 分析 先把原图的圆方树搞出来,不难发现答案就是给出的点集所构成的虚树上有多少个圆点。 直接搞就好了。 代码 #include<iostream> #i...原创 2018-05-17 15:04:43 · 442 阅读 · 0 评论 -
Codeforces 966E May Holidays 分块+虚树
题意 有一棵n个节点的树,设sisis_i表示节点iii的子树(不包括iii)大小,每个节点iii有一个不超过sisis_i的非负整数作为titit_i作为其忍耐值。一开始每个点都没有放假,现在有m个操作,每次会修改某个人的状态,从没有放假变成放假,或从放假变成没有放假,要求对于每次操作后求出有多少个节点满足其没有放假且其子树中的放假人数严格大于其忍耐值。 n,m≤105n,m≤105n,m\...原创 2018-05-16 08:15:43 · 661 阅读 · 0 评论