随笔分类 - 图论-LCA
摘要:题意:一棵树上有m个红色结点,树的边有权值。q次查询,每次给出k个点,每次查询有且只有一次机会将n个点中任意一个点染红,令k个点中距离红色祖先距离最大的那个点的距离最小化。q次查询相互独立。 分析:数据量很... 最大值最小化,二分搜答案。将ST表求lca的dfs函数加一点东西,求出每个点到其最近红
阅读全文
摘要:题意:一个N M的矩形,每个格点到其邻近点的边有其权值,需要构建出一个迷宫,使得构建迷宫的边权之和最小,之后Q次查询,每次给出两点坐标,给出两点之间的最短路径 分析:可以把每个格点视作视作图的点,隔开两点的边视作图的边,则构建迷宫可以视作求其生成树,剩余的边就是组成迷宫的墙.因为要花费最小,所以使删
阅读全文
摘要:题目:https://www.luogu.org/problemnew/solution/P4211 相当难的一道题,其思想难以用言语表达透彻。 对于每个查询,区间[L,R]中的每个点与z的lca肯定出现在z到根节点的路径上,则路径上的点会对结果产生贡献。那么可以对每个lca向根节点边走边给路径上的
阅读全文
摘要:题意:一棵树,每个点都有自己val(1 <= val <= 1e5),而任意两个点u,v可以对lca(u,v) 产生gcd(valu,valv)的贡献,求每个点能接受到来自子树贡献的最大值。 分析:一个数w和其整数数倍的数gcd值还是w。记录每个值对应树的下标,枚举1- max{val}中的数,遍历
阅读全文
摘要:题意:有一棵树,每条边给定初始权值。一个人从s点出发。支持两种操作:修改一条边的权值;求从当前位置到点u的最短路径。 分析:就是在边可以修改的情况下求树上最短路。如果不带修改的话,用RMQ预处理LCA即可。 在静态版本的LCA问题上,用树状数组维护一条边在dfs序中表示的一段区间。为什么是一段区间,
阅读全文
摘要:题意:给一张无向图,有M次加边的操作,每次操作之后输出割边的数目。 分析:显然,割边肯定出现在任意一棵生成树中,用数组f[u]记录点u在dfs树上的父亲节点,用这种方式就可以快速地找出dfs树上的任意一条边。在u,v之间加边后,原来的减去的割边肯定是u,v在dfs树上的最短路径中出现。那么每次操作之
阅读全文
摘要:这道题相当于将这两题结合: http://poj.org/problem?id=2763 http://codeforces.com/gym/101808/problem/K 题意:有N各点N条边的带权无向图(相当于一棵树多了一条边),两种操作:修改一条边的权值;求两点间的最短路径。 分析:将任意一
阅读全文