随笔分类 - ACM / 图论 LCA
摘要:原题链接 考察:LCA+二分答案 这题也太难想了,本蒟蒻完全不会QAQ 思路: 树上建边,然后每个任务都是一个查询,我们可以利用LCA求出树上任意两点的时间和.这道题要求去除一条边后最小的最大值. 两个最字很容易想到二分答案.假设二分答案为mid.对于每一个任务,检测它的时间是否会>mid.如果会统
阅读全文
摘要:原题链接 考察:树上差分 思路: 点差分.区别在于中间点多+了1.注意不能在dfs前对差分数组-1.这样会导致递推错误.比如下图: 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 using namespace std;
阅读全文
摘要:原题链接 考察:树上差分 思路: 点差分模板题.定义d[i] 为某路径上经过i的次数. 1 #include <iostream> 2 #include <cstring> 3 #include <queue> 4 using namespace std; 5 const int N = 50010
阅读全文
摘要:原题链接 考察:LCA+最大生成树 思路: 实际是求两点之间最大的最短边.这样很容易想到二分,但是直接二分会TLE. 然后又会想到次小生成树,但是这道题边不能构成树.由于我们要的边尽量大,可以考虑贪心一波建立最大生成树.然后求两点之间的最小距离直接套LCA倍增板子.这题比次小生成树省事. 时间复杂度
阅读全文
摘要:原题链接 考察:LCA 思路: md想到了两两求lca但是没敢继续想下去...我是sb 最近公共祖先一定是对u,v来说最近的,但是对于第三个点需要两两枚举求最小值. 1 #include <iostream> 2 #include <cstring> 3 #include <algorithm> 4
阅读全文
摘要:原题链接 考察:LCA + 枚举 完全不会...LCA真难.... 思路: 很容易看出两个分为两段的方式: 附加边加上成环后,环上去掉一个树边和一个非树边. 未成环的树边去掉一个边,然后任意去掉一个非树边. 设d[x] 表示 x点到其父节点的边上要去掉d[x]条非树边才断. 考虑枚举非树边,对于非树
阅读全文