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

noip 2018 D1T3 赛道修建 首先考虑二分答案,这时需要的就是对于一个长度求出能在树中选出来的最多的路径条数.考虑到一条路径是由一条向上的路径与一条向下的路径构成,或者仅仅是向上或向下的路径构成. 设\(f_i\)为i这颗子树中最多能选出来多少条路径,\(g_i\)为在i这颗子树内选出来\(f_i\)条路径后最多能往下延伸多么长的距离,就是以i点为端点向i的子树内可以选出来的最长的路径. 考虑一颗以i为根的子树,首先\(f_i=\sum_{j\in the\ son\ of\ i}f_…
题目描述 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​,满…
题目大意 最小值最大 考虑二分 二分答案 判断能不能构成m条路径 很明显满足单调性 可行 思考如何判断 对于一个节点 它的儿子会传上来一些路径 这些路径只有三种处理方式 一.传上去(只能传一条) 二.互相构成满足条件的路径 三.舍弃 考虑如何构成满足条件的路径 设二分的答案为x 将路径分为>x/2 和<x/2 和=x/2 三种 首先等于x/2的路径只能互相匹配 考虑 <x/2 和>x/2如何匹配 直接贪心 排序后 大匹配小 不能匹配的>x/2互相匹配 将互相匹配的路径中留下的…
题目大意:$NOIP2018\;TG\;D1T3$ 题解:题目要求最短的赛道的长度最大,可以想达到二分答案,接着就是一个显然的树形$DP$. 发现对于一个点,它子树中若有两条链接起来比要求的答案大,一定接起来成为一条路径,因为接起来答案一定加一,而传递上去的话不一定.然后对于一条链,一定是找可行的最短的链与它相接,把尽可能长的链传递上去.找最小的可行的链我使用了双向链表(复杂度$O(n)$,右端点总共最多向左移动$n$次,每次最多向右移动$1$次) 卡点:考场上写结束后删除节点后转移到下一个节点…
题目链接: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];…
颓了好几天,终于把这到题处理了一下. 话说,其实我考场上想出正解了,但是手残,算复杂度的时候多按了一个零,导致算出来是1亿多的复杂度,都不敢打...就把部分分都捡了一下... 题目描述: C 城将要举办一系列的赛车比赛.在比赛前,需要在城内修建 m 条赛道. C 城一共有 n 个路口,这些路口编号为 1,2,-,n1,有 n−1 条适合于修建赛道的双向通行的道路,每条道路连接着两个路口.其中,第 ii 条道路连接的两个路口编号为 ai​ 和 bi​,该道路的长度为 li​.借助这 n-1n−1 …
题面: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))…
今年noip的题和去年绝对是比较坑的题了,但是打好的话就算是普通水准也能350分以上吧. t1: 很显然这是一个简单的dp即可. #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<string> #include<algorithm> #include<ctime> #include<iomanip> #…
[LG5021][NOIP2018]赛道修建 题面 洛谷 题解 NOIP之前做过增强版还没做出来\(QAQ\) 一看到题目中的最大值最小,就很容易想到二分答案 重点是考虑如何\(check\) 设\(dp[x]\)表示在\(x\)的子树中未被选过的权值最大的路径权值为多少 对于其子节点\(v\),它满足\(f[v] + cost[u][v] >= mid\)就可以选择 否则再选一条路径和它拼在一起即可 这个过程开个\(multiset\)可以较简单地做 复杂度\(O(nlog_n^2)\)(常数…
题目描述 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,满足可…