P5021 赛道修建 (NOIP2018)】的更多相关文章

传送门 考场上把暴力都打满了,结果文件输入输出写错了.... 当时时间很充裕,如果认真想想正解是可以想出来的.. 问你 长度最小的赛道长度的最大值 显然二分答案 考虑如何判断是否可行 显然对于一个节点,它最多只能向父亲传一条路径长度 那么其它路径的合并只能在子树间进行 贪心一波,如果一段路径在子树就可以合并出合法长度 那么直接合并一定是不会比传给父亲再考虑合并更劣的 子树都合并完后,剩下的肯定传最长的长度给父亲 考虑在子树内如何贪心地进行最优合并 显然最小的边去找最小的能使它合法的边合并 (注意…
正解:贪心+LCA+二分答案 解题报告: 想先港下部分分qwq因为我部分分只拿到了10ptsQAQ(时间不够不是理由,其实还是太弱,所以要想很久,所以才时间不够QAQ m=1 找直径长度,完 一条链 二分答案 check是一直加直到>mid为止 菊花图 二分答案 check是大于mid的直接加入否则尝试两两配对 然后港正解qwq 首先很明显的是个二分答案?这个大概是个比较简单看出的呢qwq 然后思考check怎么写 其实菊花图提示了一些 很容易想到的是对一个点,它的每个崽都最多给它贡献一条链,那…
[题解]P5021 赛道修建 二分加贪心,轻松拿省一(我没有QAQ) 题干有提示: 输出格式: 输出共一行,包含一个整数,表示长度最小的赛道长度的最大值. 注意到没,最小的最大值,还要多明显? 那么我们考虑二分. 直接二分答案,假设我们得到了二分答案\(x\),我们就利用这个答案检查是否可行.考虑这样的一种办法,指定一个点为树的根,先将\(dfs\)放下去,每个\(dfs\)都要尽量将这个节点内所有的赛道合成成满足\(\ge x\),并且贡献一条尽量长的赛道上去.假设有一个\(dfs\)表示自己…
题面:P5021 赛道修建 题解:二分答案,用Dfs进行判断,multiset维护. Dfs(x,fa,Lim)用来计算以x为根的子树中有多少符合条件的路径,并返回剩余未使用的最长路径长. 贪心思想很显然是正确的. 代码: #include<cstdio> #include<cstring> #include<set> #define max(a,b) ((a)>(b)?(a):(b)) #define min(a,b) ((a)<(b)?(a):(b))…
题目描述 C 城将要举办一系列的赛车比赛.在比赛前,需要在城内修建 mm 条赛道. C 城一共有 nn 个路口,这些路口编号为 1,2,-,n1,2,-,n,有 n-1n−1 条适合于修建赛道的双向通行的道路,每条道路连接着两个路口.其中,第 ii 条道路连接的两个路口编号为 a_i*a**i* 和 b_ibi,该道路的长度为 l_ili.借助这 n-1n−1 条道路,从任何一个路口出发都能到达其他所有的路口. 一条赛道是一组互不相同的道路 e_1,e_2,-,e_ke1,e2,-,ek,满足可…
我同学的歌 题目描述 你有一棵树,每条边都有权值 did_idi​.现在要修建 mmm 条赛道,一条赛道是一条连贯的链,且一条边至多出现在一条赛道里.一条赛道的长被定义为,组成这条赛道的边的权值之和.求这些赛道中长度最小的一条的长度的最大值. Solution 代码先搁着.…
题目 首先考虑二分,然后发现最小长度越大的话,赛道就越少.所以可以用最终的赛道个数来判断长度是否合理.问题转化为给定一个长度,问最多有多少条互不重叠路径比这个给定长度大. 考虑贪心,毕竟贪心也是二分check函数的常用做法.原图毕竟为一棵树,每条路径都由一个端点一个终点和他们的\(LCA\)之间的连边组成.我们直接枚举lca,然后枚举lca的子链且该链上无被找到的链,对于没有找到的链,都匹配上子链上最小的.浪费最少的,考虑这样做为什么是对的,因为如果不练子链上,而去连父亲的话,最底下的链肯定就浪…
原题链接 简要题意: 在一棵树上求 \(m\) 条不相交的路径的最小值的最大值. 本题部分分很多,而且本人也交了 \(27\) 次,所以一定要仔细讲部分分! 算法一 对于 \(b_i = a_i + 1\) 的数据,你发现这是一条链. 也就是说,对这部分数据,题目简化为: 将一个数组分为不相交的若干区间,使得它们权值和的最小值最大. 一看,最小值最大,就是二分答案. 验证方法也很简单. 假设你当前的和是 \(\text{sum}\),当前决策的数为 \(x\),验证的和为 \(ans\). 此时…
Luogu5021 [NOIP2018]赛道修建 一棵大小为 \(n\) 的树,边带权.选 \(m\) 条链使得长度和最小的链最大. \(m<n\leq5\times10^4\) 贪心,二分答案 最小最大?二分 先看部分分 菊花图 二分答案,顺序贪心匹配. 二叉树 每个节点两种情况,选一个儿子往上算贡献,两个儿子合成一条链. 于是可以将两种做法结合 对于每个节点,往上算贡献.贪心匹配两个儿子 至于实现,可以考虑 \(multiset\) ,也可以排序+二分 时间复杂度 \(O(n\log^2n)…
[NOIp2018提高组]赛道修建 题目大意: 给你一棵\(n(n\le5\times10^4)\)个结点的树,从中找出\(m\)个没有公共边的路径,使得第\(m\)长的路径最长.问第\(m\)长的路径最长可以是多少. 思路: 二分答案+树形DP.\(f[x]\)表示以\(x\)为根的子树中最多能找出几个长度\(\ge k\)的路径.\(g[x]\)表示去掉已经满足的路径,从\(x\)子树内往上连的最长的路径有多长. 转移时将所有子结点的贡献\(g[y]+w\)排序.若贡献已经\(\ge k\)…