倍增
gjghfd
这个作者很懒,什么都没留下…
展开
-
codeforces827D Best Edge Weight -- 最小生成树+倍增
题目大意:给定一个联通图,对于每条边求出它的最大权值,使其在图的所有最小生成树上。先求出图的一棵最小生成树: 对于不在树上的边(u,v), 它的权值只要小于树上u到v路径中一条边就可以代替这条边。 对于在树上的边(u,v),可以先预处理出所有两端在u到v路径上的不在树上的边的最小值。它的权值一定要小于最小值。 路径max和min都可以用倍增求。 时间复杂度O(nlog n)原创 2017-07-12 17:06:55 · 1196 阅读 · 0 评论 -
Codeforces860E Arkady and a Nobody-men -- 单调栈 + 倍增
不会数据结构。。。只能想其他做法。。。 令 deepideep_i 表示点 ii 的深度(根的深度为 11)。 显然点 xx 的答案可以表示成 ∑ni=1deeplca(i,x)\sum_{i=1}^n deep_{lca(i,x)}。 我们按深度从小到大枚举每个点,那么一个点的答案就等于它父亲的答案加上与它同深度的点对它的贡献。 对于同一深度的点,将它们按 dfsdfs 序从小到大排序,然原创 2017-09-18 20:47:27 · 817 阅读 · 0 评论 -
[ DP 树状数组 dfs序 倍增 ] Codeforces856D Masha and Cactus
%%%LargestJN 令 fif_i 表示点 ii 子树的答案,sis_i 表示点 ii 所有儿子的答案减去 fif_i。 假如点 ii 不在环上,答案就是 ii 的所有儿子的 ff 和。 假如点 ii 在环上,对于所有LCA是 ii 的边 (x,y)(x,y),假如选了这条边,答案就是 xx 到 ii , yy 到 ii 路径上 sjs_j 之和加上点 ii 所有儿子的答案之和。原创 2017-10-18 15:33:54 · 333 阅读 · 0 评论