首页 > TAG信息列表 > P5021
P5021 [NOIP2018 提高组] 赛道修建 思路简记
发现答案具有单调性,尝试一下二分答案能不能做 二分答案 \(t\) 后,问题的关键就变成最多能找到多少条长度大于等于 \(t\) 的赛道 我们先假设整棵树以 \(1\) 为根 把样例的图放出来: 我们可以发现一个性质: 如果一个链,它经过了结点 \(i\) 的父结点,同时包含了 \(i\) 到子结点的某条边,那P5021赛道修建 题解
理一下思路,这道题我们首先的想法是二分答案一个 $check $ 没问题吧? 我们二分了一个值,考虑 \(check\) 的过程。 我们每次记录每个节点还没被并入的链长度,然后实行在树上进行一个 \(dfs\) 的过程。 然后就是考虑这个 \(dfs\) 的过程中我们每次遍历完子树,然后我们其实就将这个里面划[Luogu] P5021 赛道修建
\(Link\) Description \(C\)城将要举办一系列的赛车比赛。在比赛前,需要在城内修建\(m\)条赛道。 \(C\)城一共有\(n\)个路口,这些路口编号为\(1,2,…,n\),有\(n−1\)条适合于修建赛道的双向通行的道路,每条道路连接着两个路口。其中,第\(i\)条道路连接的两个路口编号为\(a_i\)和\(b_i\)洛谷P5021 赛道修建
题目 首先考虑二分,然后发现最小长度越大的话,赛道就越少。所以可以用最终的赛道个数来判断长度是否合理。问题转化为给定一个长度,问最多有多少条互不重叠路径比这个给定长度大。 考虑贪心,毕竟贪心也是二分check函数的常用做法。原图毕竟为一棵树,每条路径都由一个端点一个终点和他们P5021 赛道修建
P5021 赛道修建 填坑 死磕成功 仔细回想,二分答案还是很明显的 接下来是如何判断的问题 就以样例为例子好了 我的目的是贪心选出越多长度大于mid的路径 首先,对于一条道路,如果它的长度大于等于mid,那么我们直接让sum++,直接删除这条边即可 事实上,对于以u为根的子树,经过u的路径有两种