
LCA
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
[AHOI2008] BZOJ 1787 Meet紧急集合-LCA
题目链接:右转进入题目 题目大意:请自行参考题目; 做法: 其实注意到,三个点,两两搭配,会有三个LCA;可以证明,这三个LCA至少有两个是相同的; 不妨设相同的是LCA1和LCA2,可以证明,如果选择LCA3作为答案,由于边权为1,那么花费达到最小值。 更进一步的说,这个最小值就是虚树的边数。 证明方法十分简单。 先证至少有两个LCA相同。 不妨设三个点是a,b,c。 现在考虑原创 2017-04-09 14:20:07 · 395 阅读 · 0 评论 -
POJ 3728 The merchant - LCA
传送门 题目大意:给定一棵树,点有点权,若干询问,每次询问从u到v的路径(v到u不算)中,选择一个点的点权和之后的一个点的点权,使得之后这个点的点权减去之前这个点的点去之差最大。 题解:首先肯定要求LCA。 看网上说什么并查集之类的好麻烦啊不明觉厉。 我的做法非常简单,考虑求LCA时候依次切出来的不超过O(lgn)个区间,答案要么完全在某一个区间中,要么画一条线把这些区间分为两部分, 从原创 2017-07-11 18:40:17 · 341 阅读 · 0 评论 -
POJ 3417 Network
传送门 题目大意:给定一棵树和若干条边,问删去树上的一条边和给定的边中的一条使得图不联通的方案数。 题解: 首先注意到,把树上的一条边断掉变成的两个联通块,如果这两个联通块之间恰好有1条给定的边那么方案数+1. 如果没有那么再任意删去一条即可,方案数+(给定的边数) 那么一个显然的做法就是枚举n-1条边然后再枚举m条边然后统计。复杂度O(nm*统计答案的复杂度)。 显然这个东西是可以转原创 2017-07-11 21:02:27 · 411 阅读 · 0 评论 -
POJ 2763 Housewife Wind - LCA - 树状数组
传送门 题目大意:给定一棵树,支持修改边权和查询两点距离。 显然可以链剖去做。但是注意到dis(x,y)=dis(1,x)+dis(1,y)-2*(dis(1,LCA(x,y)))。 然后修改到x的边的边权等价于让x子树中的所有点的dis(1,y)+=c。 然后显然可以用BIT维护。 #include #include #include #include #define MAXN 1原创 2017-07-15 16:06:45 · 393 阅读 · 0 评论 -
HDU5770 Treasure - LCA - 扫描线 - 线段树
传送门 题目大意:……给定一棵树,有若干三元组(u,v,w)表示有一个宝箱在v,其唯一对应的钥匙在v,且宝箱价值是w(可能为负)。 让你选一条简单路径(有向),每到一个点要求必须先拿起钥匙(如果有的话),然后必须打开宝箱(如果有宝箱并且手上已经有钥匙了),最大化价值之和。 题解:思路过程如下:直接统计每条路径的价值没有办法。 显然一条路径由起点和终点唯一决定,下文记为(s,t)。我们可以考原创 2017-07-15 17:02:14 · 510 阅读 · 0 评论 -
直径 - 树dp
题目大意:给你一颗树T,1为根。 新建m颗树为森林,每颗树都是T的一个子树。 将这个森林连接起来,每次形如把第a颗树中的b点和第c颗树中的d点连起来。 最后求这玩意的直径。 题解: 显然可以虚树dp,没写。 考虑首先对T的每个点求其子树直径。 有个结论是这样的,两个树连一条边形成一颗新的树,新的树的直径的端点是原两颗树的直径的四个端点中选择某两个。 然后dfs那个询问树,像朴素dp...原创 2018-09-09 19:20:11 · 213 阅读 · 0 评论 -
红黑树 - 贪心
给定一棵有根树,根为1,边有边权,点有颜色(红色或黑色)。1号点一定是红色。定义一个红点的价值是0,黑点的价值是它到距离它最近的红色祖先的距离。有m次询问,每次给出k个点,你可以改变树上的最多一个点的颜色(根除外),在此前提下求给出的k个点的权值的最大值最小是多少。注意每次询问是独立的,也就是说你在这次询问中改变一个点的颜色,在下次询问时就会复原。 场上傻了吧唧的写了个虚树二分光荣TLE。 然而可...原创 2018-09-19 15:05:19 · 237 阅读 · 0 评论 -
statement - 基环树 - 虚树 - 倍增
这个题写的真爽翻了。 题目大意就是给你一个树和基环树森林(内向),边有权,每次询问给你两个点集,问所有黑点到白点的路径中,边权最大值最小是多少。 题解:首先考虑树,直接建出虚树来跑一遍dfs即可。然后每个环会选出一些点来,那些点先计算出一个贡献,你只要把环倍长然后那些点排个序,在上面做倍增即可。 #include<iostream> #include<cstring> #i...原创 2018-09-27 09:24:46 · 265 阅读 · 0 评论 -
「学习笔记」网络战争 - KD-Tree - 最小割树 - 学习笔记
题目大意就是让你实现一个KDT和最小割树(大雾) 然后发现两个都不会,就赶紧去学习了一发姿势。 顺带练习了一发namespace都的使用姿势。 KDT本质上就是个做剪枝的过程,很好理解。 最小割树是这样的,每次随便选择一个S和T,然后求出最小割w,然后在最小割树上连(S,T,w)即可。然后一对点的最小割是路径上都的最小值。 (这垃圾题写了将进7个k也真爽翻了的说 #include&lt;iostr...原创 2018-09-22 17:13:07 · 348 阅读 · 0 评论