题目大意:给定一棵内向森林,多次给定两个点a和b,求点对(x,y)满足:
1.从a出发走x步和从b出发走y步会到达同一个点
2.在1的基础上如果有多解,那么要求max(x,y)最小
3.在1和2的基础上如果有多解,那么要求min(x,y)最小
4.如果在1、2、3的基础上仍有多解,那么要求x>=y
因此那个x>=y是用来省掉SPJ的,不是题目要求- -
容易发现:
如果a和b不在同一...
分类:
其他好文 时间:
2015-03-03 20:47:42
阅读次数:
300
题目大意:给定一棵仙人掌,多次询问两点之间的最短路
静态仙人掌= = 在VFK讲仙人掌之前就想做= = 结果一直拖= =
好不容易写完了= = 刚过样例 BZ就开始维护- - 维护到闭营= = 交上去还WA了= = 尼玛我这傻逼到底还是把倍增LCA写挂了= =
算了回归正题
首先我们的思路是这样的
考虑给定的是一棵树 多次询问树上两点间距离
那么我们一般的做法是预处理每个点到...
分类:
其他好文 时间:
2015-02-18 16:30:02
阅读次数:
299
题意:首先一个状态至多有3种跳的方法的~不能隔着格子跳的~
题解:
既然有三种方法,那么显然有两种是向外跳,一种是收敛着跳(往里)
然后这个就可以类比成父亲状态和子状态,
里兮为父,外则即子。(诶窝里斗的感觉,,这文言文有点喜感)
然后我们就发现步数是开始状态和结束状态都往里走,走到lca的步数。
或者说开始状态走到lca,然后再由lca走到结束状态。。...
分类:
其他好文 时间:
2015-01-29 09:39:28
阅读次数:
184
233……
【BZOJ1832】【AHOI2008】聚会
倍增lca
就是这道题。输入输出都没有改。
http://blog.csdn.net/vmurder/article/details/42607739
题解也在以前那篇博客里面。
代码:(直接复制的那篇博客)
#include
#include
#include
#include
#define N...
分类:
其他好文 时间:
2015-01-29 09:37:27
阅读次数:
187
这道题写不了tarjanlca。
50W的询问,也就是150W次lca查询,每次加三条边,内存妥妥要爆。
只能退求logn的倍增lca了。
sad story. 还好一遍AC。
题解:
就是发现每次询问三个点之间有唯一的路径集,那么我们选其中两个取lca,然后另一个点自己走到这个lca,
就可以贪心取得答案。
代码:
#include
#include
#inc...
分类:
其他好文 时间:
2015-01-11 11:06:17
阅读次数:
172
题目大意:给出一棵树,每次询问一些节点,当把这些节点连接起来,使得每两个询问的点之间有一条边,共有k*(k - 1)条边。问这些边中,长度的总和是多少,最短的一条边是多少,最长的一条边是多少。保证询问的点的总数是O(n)级别。
思路:利用LCA单调性,每次询问的时候重新建树,在这棵树上做DP,使得总体时间复杂度降到O(nlogn)。
树形DP我写的都要麻烦死了。。听了正解之后简直想吐血...
分类:
其他好文 时间:
2015-01-09 17:34:40
阅读次数:
274
题目大意:给定一棵树,m次询问,每次给出k个关键点,询问这k个点之间的两两距离和、最小距离和最大距离
n
处理方法同2286 消耗战 地址见 http://blog.csdn.net/popoqqq/article/details/42493725
这个题的DP有些麻烦 因此我把要处理的节点单独拎出来做的DP 具体状态和转移见代码
#include
#includ...
分类:
其他好文 时间:
2015-01-07 18:50:04
阅读次数:
204
题目大意:给定一棵树,边上有边权,m次询问,每次选定一些关键点,求将1号节点与所有关键点都切断所需的最小花销
关键点的总数
首先我们考虑暴力想法
令f[x]表示切断以x为根的子树中所有关键点的最小花销
g[x]表示x是不是关键点
那么对于x的每个子节点y有f[x]=Σmin(g[y]?INF:f[y],Distance(x,y) )
这样每次暴力做一遍树形DP,时间复杂度是O(n*...
分类:
其他好文 时间:
2015-01-07 16:57:32
阅读次数:
180
题目大意:给定一个n个点m条边的无向连通图,k次询问两点之间所有路径中最长边的最小值
Kruskal+倍增LCA做法见http://blog.csdn.net/popoqqq/article/details/39755703
LCT做法见http://blog.csdn.net/popoqqq/article/details/39929277
Kruskal重构树真是强大……一不小心手滑就R...
分类:
Web程序 时间:
2014-11-23 13:13:26
阅读次数:
198
题目大意:给出一棵树,在上满找三个点,问那个点到这三个点的距离和最短。
思路:可以证明,这个店必然是这三个点之间两个的LCA,然后枚举就可以了。
CODE:
#include
#include
#include
#include
#define MAX 1000010
#define INF 0x3f3f3f3f
using namespace std;
int...
分类:
其他好文 时间:
2014-11-03 17:48:16
阅读次数:
246