一名苦逼的OIer,想成为ACMer

Iowa_Battleship

随笔分类 -  树的直径

洛谷2860 [USACO06JAN]冗余路径Redundant Paths
摘要:"原题链接" 题意实际上就是让你添加尽量少的边,使得每个点都在至少一个环上。 显然对于在一个边双连通分量里的点已经满足要求,所以可以用$tarjan$找边双并缩点。 对于缩点后的树,先讲下我自己的弱鸡做法,每次找直径,因为将直径改为环显然使得新添的边贡献最大,这样贪心的连下去,直到所有点满足要求为止 阅读全文

posted @ 2018-10-16 21:24 Iowa_Battleship 阅读(142) 评论(0) 推荐(0) 编辑

BZOJ1791或洛谷4381 [IOI2008]Island
摘要:一道基环树的直径 "BZOJ原题链接" "洛谷原题链接" 又是一道实现贼麻烦的题。。 显然公园其实是基环树森林,求的最长距离其实就是求每一棵基环树的直径的总和。 对于每棵基环树,其直径要么经过环,要么是某个环上点的子树的直径。所以我们可以先找出它的环,然后对环上的每个点进行$dfs$(不能经过环上的 阅读全文

posted @ 2018-09-06 20:43 Iowa_Battleship 阅读(146) 评论(0) 推荐(0) 编辑

BZOJ1999或洛谷1099&BZOJ2282或洛谷2491 树网的核&[SDOI2011]消防
摘要:一道树的直径 "树网的核 BZOJ原题链接" "树网的核 洛谷原题链接" "消防 BZOJ原题链接" "消防 洛谷原题链接" ~~一份代码四倍经验,爽~~ 显然要先随便找一条直径,然后直接枚举核的两个端点,对每一次枚举的核遍历核上的每个点,用$dfs$求出核外节点到核的最大值即可,时间复杂度为$O( 阅读全文

posted @ 2018-09-02 17:01 Iowa_Battleship 阅读(155) 评论(0) 推荐(0) 编辑

BZOJ1912或洛谷3629 [APIO2010]巡逻
摘要:一道树的直径 "BZOJ原题链接" "洛谷原题链接" 显然在原图上路线的总长为$2(n 1)$。 添加第一条边时,显然会形成一个环,而这条环上的所有边全部只需要走一遍。所以为了使添加的边的贡献最大化,我们找出树的直径,将其两端点连上边即可。 设直径长$L$,于是路线总长就变为$2(n 1) L+1= 阅读全文

posted @ 2018-09-02 16:32 Iowa_Battleship 阅读(121) 评论(0) 推荐(0) 编辑

导航