[CF613D]Kingdom and its Cities 题意:给你一棵树,每次询问给出k个关键点,问做多干掉多少个非关键点才能使得所有关键点两两不连通. $n,\sum k\le 10^5$ 题解:刷虚树板子啦! 首先如果两个关键点相邻则无解.然后建出虚树,进行树形DP.设f[i]表示i子树中的关键点都不连通,且i子树中的点与外面的点也不连通的最小花费,g[i]表示i子树重的关键点都不连通,且子树中只有一个点与外面的点连通的最小花费.转移时讨论一波即可. #include <cstdio>…
LINK:Kingdom and its Cities 发现是一个树上关键点问题 所以考虑虚树刚好也有标志\(\sum k\leq 100000\)即关键点总数的限制. 首先当k==1时 答案显然为0. 然后考虑无解情况 容易发现这种情况是两个点同时为关键点 那么我们只需要判断是否存在两个点相连的情况就好了. 这个可以在建立虚树时候判断 我多此一举了 直接标记父亲然后判断父亲是否存在. 接下来考虑如何统计答案. 可以从下往上观察 在某个点处统计儿子们的贡献. 假设儿子都是关键点 考虑当前点是否是…
传送门 $\sum k \leq 100000$虚树套路题 设$f_{i,0/1}$表示处理完$i$以及其所在子树的问题,且处理完后$i$所在子树内是否存在$1$个关键点满足它到$i$的路径上不存在任何点被封的最小代价. 转移考虑$i$是否是关键点以及是否封$i$号点. 注意判断相邻两个点同时是关键点的情况.同时需要注意:如果虚树上两个点不相邻,可以封这两个点之间的点. #include<bits/stdc++.h> //This code is written by Itst using n…
Code: #include<bits/stdc++.h> #define ll long long #define maxn 300003 #define RG register using namespace std; inline int read() { RG int x=0,t=1;RG char ch=getchar(); while((ch<'0'||ch>'9')&&ch!='-')ch=getchar(); if(ch=='-')t=-1,ch=g…
题目大意: 给一棵树,每次给出一些关键点,对于树上每个点,被离它最近的关键点(距离相同被标号最小的)控制 求每个关键点控制多少个点 分析: 虚树+dp dp过程如下: 第一次dp,递归求出每个点子树中关键点到它距离最小值 第二次dp,用第一次的信息,从上往下转移,求出每个点到所有关键点中到它距离最小值 这里兼容性讨论一下,发现可以不用存次大值,因为若最小值来自要更新的子树,则子树中点到上面的点的距离一定不优 前两次dp求出了虚树中1,2类点被谁控制 第三次dp,对于每条边,找到断点,细节见代码…
题目大意:多次给出关键点,求切断边使所有关键点与1断开的最小费用 分析:每次造出虚树,dp[i]表示将i和i子树与父亲断开费用 对于父亲x,儿子y ①y为关键点:\(dp[x]\)+=\(dismn(x,y)\) ②y不为关键点:要么断y,要么断y所有子树 \(dp[x]\)+=\(min(dismn(x,y),dp[y])\) ========================================================= 关于兼容性的一种讨论 dismn(x,y)直接改为d…
[题意]给定n个点的带边权树,每次询问给定ki个特殊点,求隔离点1和特殊点的最小代价.n<=250000,Σki<=500000. [算法]虚树+DP [题解]考虑普通树上的dp,设f[x]表示隔离1和子树x内特殊点的最小代价,val[x]表示x到1路径上的最小代价(预处理). 点x特殊,f[x]=val[x] 否则,f[x]=min{val[x],Σf[y]},y=son[x] 在询问总数有限制的前提下,可以建虚树进行如上DP. 复杂度O(Σki log n). 注意: 1.清空时垃圾回收,…
暴力枚举非树边取值做DP可得75. 注意到每次枚举出一个容斥状态的时候,都要做大量重复操作. 建立虚树,预处理出虚树上两点间的转移系数.也可动态DP解决. 树上倍增.动态DP.虚树DP似乎是这种问题的三种通用解法. 代码不是特别长但极其难写,预处理过程中要考虑各种情况.水平不够只好抄代码. #include<cstdio> #include<algorithm> #define rep(i,l,r) for (int i=(l); i<=(r); i++) #define F…
2286: [Sdoi2011]消耗战 Time Limit: 20 Sec  Memory Limit: 512 MBSubmit: 4998  Solved: 1867[Submit][Status][Discuss] Description 在一场战争中,战场由n个岛屿和n-1个桥梁组成,保证每两个岛屿间有且仅有一条路径可达.现在,我军已经侦查到敌军的总部在编号为1的岛屿,而且他们已经没有足够多的能源维系战斗,我军胜利在望.已知在其他k个岛屿上有丰富能源,为了防止敌军获取能源,我军的任务是…
题面:BZOJ传送门 洛谷传送门 题目大意:略 细节贼多的虚树$DP$ 先考虑只有一次询问的情况 一个节点$x$可能被它子树内的一个到x距离最小的特殊点管辖,还可能被管辖fa[x]的特殊点管辖 跑两次$dfs$即可,时间$O(n)$ 再考虑一条链的情况 一条链上有很多个特殊点,相邻两个特殊点$x,y$之间可能有很多连续的非特殊点,那么在这些连续的非特殊点上会有一个分界,前面一部分被$x$管辖,后面一部分被$y$管辖 在链上二分即可,时间$O(mlogm)$ 正解就是把上面两种情况结合起来..用虚…