noip2018 D1T3 赛道修建】的更多相关文章

题目描述 C 城将要举办一系列的赛车比赛.在比赛前,需要在城内修建 mm 条赛道. C 城一共有 nn 个路口,这些路口编号为 1,2,…,n1,2,…,n,有 n-1n−1 条适合于修建赛道的双向通行的道路,每条道路连接着两个路口.其中,第 ii 条道路连接的两个路口编号为 a_iai​ 和 b_ibi​,该道路的长度为 l_ili​.借助这 n-1n−1 条道路,从任何一个路口出发都能到达其他所有的路口. 一条赛道是一组互不相同的道路 e_1,e_2,…,e_ke1​,e2​,…,ek​,满…
题目链接:Click here Solution: 最小值最大,考虑二分一个答案\(k\) 考虑在子树内先匹配,最后传递一个值给自己的父亲(因为每条边只能用一次,所以一颗子树最多传递一个值) 那么我们就可以用一个\(multiset\)来存子树的传递值,然后匹配,将剩下的边传递上去就行了 Code: #include<bits/stdc++.h> using namespace std; const int N=5e4+10; int n,m,cnt,num,l=1,r,u,head[N];…
noip 2018 D1T3 赛道修建 首先考虑二分答案,这时需要的就是对于一个长度求出能在树中选出来的最多的路径条数.考虑到一条路径是由一条向上的路径与一条向下的路径构成,或者仅仅是向上或向下的路径构成. 设\(f_i\)为i这颗子树中最多能选出来多少条路径,\(g_i\)为在i这颗子树内选出来\(f_i\)条路径后最多能往下延伸多么长的距离,就是以i点为端点向i的子树内可以选出来的最长的路径. 考虑一颗以i为根的子树,首先\(f_i=\sum_{j\in the\ son\ of\ i}f_…
这道题有一点点树上dp的意思(大佬轻喷 我刚拿到这道题的时候毫无头绪,只知道这道题要二分答案 为什么是二分答案??? 题目: 目前赛道修建的方案尚未确定.你的任务是设计一 种赛道修建的方案,使得修建的 m 条赛道中长度 最小的赛道长度最大(即 m 条赛道中最短赛道的 长度尽可能大) 通常情况下出现 最小的--最大 或者 最大的--最小 时就是二分答案. 如何二分答案??? 这道题问的是最小的长度最大, 那一定是 二分长度, 即我们可以先设开始时 l = 0, r = 最大值 mid = (l +…
题目大意:$NOIP2018\;TG\;D1T3$ 题解:题目要求最短的赛道的长度最大,可以想达到二分答案,接着就是一个显然的树形$DP$. 发现对于一个点,它子树中若有两条链接起来比要求的答案大,一定接起来成为一条路径,因为接起来答案一定加一,而传递上去的话不一定.然后对于一条链,一定是找可行的最短的链与它相接,把尽可能长的链传递上去.找最小的可行的链我使用了双向链表(复杂度$O(n)$,右端点总共最多向左移动$n$次,每次最多向右移动$1$次) 卡点:考场上写结束后删除节点后转移到下一个节点…
$Luogu$ $Sol$ 一直以为是每个点只能经过一次没想到居然是每条边只能经过一次$....$ 首先其实这题$55$分的部分分真的很好写啊,分别是链,数的直径和菊花图,这里就不详细说了. 使得修建的$m$条赛道中长度最小的赛道长度最大有了这句话显然就要考虑考虑二分.现在就是要考虑如何判断了. 任意选择结点作为根建树.注意到一条赛道的组成其实只有两种,一种是一条简单的由浅到深的链,另一种是由深到浅再到深这样的折了一下的链.考虑由深到浅的处理结点.对于每个结点,把子结点上传的链长加上父与子之间的…
传送门 Luogu 解题思路 一眼先二分(上界树的直径,下界最小边权),然后再考虑 \(\text{DP}\). 对于当前节点 \(u\),在它的所有儿子中分别返回一条匹配不完的长度最大的路径 \(Max\). 若该路径长大于二分值,直接修一条,不然丢进 \(\text{multiset}\) 里面. 对于 \(\text{multiset}\) 里的元素每次贪心的找出尽可能大的一条与最小的匹配,若找不到则用来更新 \(Max\) \(check\) 函数里面返回 \(ans\ge m\),最后…
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\)…
[LG5021][NOIP2018]赛道修建 题面 洛谷 题解 NOIP之前做过增强版还没做出来\(QAQ\) 一看到题目中的最大值最小,就很容易想到二分答案 重点是考虑如何\(check\) 设\(dp[x]\)表示在\(x\)的子树中未被选过的权值最大的路径权值为多少 对于其子节点\(v\),它满足\(f[v] + cost[u][v] >= mid\)就可以选择 否则再选一条路径和它拼在一起即可 这个过程开个\(multiset\)可以较简单地做 复杂度\(O(nlog_n^2)\)(常数…