随笔分类 - 树论——直径
摘要:XVII.CF1413F Roads and Ramen 首先,注意到本题等价于求路径上所有边权的异或和为的路径长度的最大值。 然后,我们要猜/证明出一个结论,即任意一条极长合法路径,其必有一个端点是直径端点。 证明: 我们设有一条直径。我们再设表示从节点到根
阅读全文
摘要:XV.[USACO18FEB]New Barns P 这种东西应该怎么维护呢?这是子树最大值呀。 一种方法是用平衡树(例如 std::multiset )维护轻儿子长度集合。但是这种东西太麻烦,太恶心了。 考虑直径的性质。我们给出两条引理: 引理1:假如有一条直径,那么树中任意一个点$
阅读全文
摘要:CX.[POI2015]MOD 比较恶心的题目。 首先,有一个结论,即如果把两棵树通过某种方式连接起来,新树的直径的端点一定来自于原本两棵树的直径端点集合。 则考虑新树的最大直径,明显就是把两棵树的直径直接连一块,就是两棵树的直径之和再加一。 考虑新树的最小直径,则应该选择两树直径的中点(如果直径长
阅读全文
摘要:LXXXIV.CF51F Caterpillar 也不知道算不算DP,反正就放这吧。 首先我们很轻松就能想到关于“环”,或者进一步地说,“边双连通分量”。因为最终图中不能有环,所以每个边双肯定最终会被缩成一个点。那么我们就也来缩一下。 在缩点之后,我们便得到了一片森林。 很明显对于每一棵树,我们都应
阅读全文
摘要:LVI.CF633F The Chocolate Spree 奇奇怪怪的直径题 思路1.用多种东西拼出来直径 我们设表示: :子树内一条路径的最大值 :子树内两条路径的最大值 :子树内一条路径,且起点为的最大值 :子树内两条
阅读全文