[BZOJ2067]szn】的更多相关文章

description BZOJ权限题. solution 一道非常好的二分+贪心题目. 第一问就是\(\frac{\sum_u(deg[u]-1)}{2}+1\). 第二问需要在方案最优的情况下最长链最短,考虑二分. 那么自底向上地考虑每个子树中的节点, 我们发现每个节点要产生最优方案,一定是考虑选择自己伸向父亲的链和合并儿子伸向自己的链. 于是我们把所有儿子伸向自己的链长排序, 那么我们需要在合并的链长不超过二分答案的情况下使得伸向父亲的链长最小. 由于伸向父亲链长越小合并答案越不容易满足,…
正解:二分+贪心 解题报告: 传送门$QwQ$ 题目大意就说有一棵树,然后要用若干条线覆盖所有边且不能重叠.问最少要用几条线,在用线最少的前提下最长的线最短是多长. 昂首先最少用多少条线这个还是蛮$easy$的$QwQ$?显然答案就$1+\sum \frac{d_i-1}{2}$.考虑每个点的儿子都两两匹配,多出来的部分直接到父亲处做就成$QwQ$.加一是因为根节点本来不应该减一的因为没有父亲节点,所以就加回来$QwQ$. 然后看第二问. 首先显然先二分出一个长度.然后$check$就$dfs$…
[BZOJ2067]SZN(二分,动态规划,贪心) 题面 权限题额 Description String-Toys joint-stock 公司需要你帮他们解决一个问题. 他们想制造一个没有环的连通图模型. 每个图都是由一些顶点和特定数量的边构成. 每个顶点都可以连向许多的其他顶点.一个图是连通且无环的. 图是由许多的线做成的.一条线是一条连接图中两个顶点之间的路径.由于一些技术原因,两条线之间不能有重叠的部分,要保证图中任意一条边都被且仅被一条线所覆盖.由于一些技术原因,做一个这样的图的模型的…
[BZOJ2067][Poi2004]SZN Description String-Toys joint-stock 公司需要你帮他们解决一个问题. 他们想制造一个没有环的连通图模型. 每个图都是由一些顶点和特定数量的边构成. 每个顶点都可以连向许多的其他顶点.一个图是连通且无环的. 图是由许多的线做成的.一条线是一条连接图中两个顶点之间的路径.由于一些技术原因,两条线之间不能有重叠的部分,要保证图中任意一条边都被且仅被一条线所覆盖.由于一些技术原因,做一个这样的图的模型的费用取决于用了多少条线…
Description String-Toys joint-stock 公司需要你帮他们解决一个问题. 他们想制造一个没有环的连通图模型. 每个图都是由一些顶点和特定数量的边构成. 每个顶点都可以连向许多的其他顶点.一个图是连通且无环的. 图是由许多的线做成的.一条线是一条连接图中两个顶点之间的路径.由于一些技术原因,两条线之间不能有重叠的部分,要保证图中任意一条边都被且仅被一条线所覆盖.由于一些技术原因,做一个这样的图的模型的费用取决于用了多少条线以及最长的那条的长度. (每条边的长度都为1.…
题解: 比上一题水多了 首先树上贪心,肯定要考虑儿子 然后我们会发现这个东西就是要先把儿子连起来 然后如果儿子个数为奇数我们可以把这一条和它连向父亲的并在一起 由于根没有父亲所以要单独考虑 答案就是sigma{i,(son[i]-1)/2}+(son[root]+1)/2 然后也是比较简单的 最大值最小,二分答案显然 考虑一个节点x, 如果为偶数只要最大最小配对满足要求就可以 如果为奇数在儿子满足条件的情况连上去的长度越短越好 我们可以这么操作 从大到小考虑,我们查找到最大的能匹配的最大的那个…
题目大意: 给一棵树.求用最少的链覆盖这棵树(链不能相交),在这个基础上求最长的链最短可以是多少. n<=10000 题解: 肯定先处理第一问: 答案:$\sum_(du[i]-1)/2+1$ 证明: 1.对于一个非根的节点x,x的每一个到儿子的边必须被覆盖. 只有两种可能:要么这个链不超过x,要么从x头上进来. 发现,从x头上进来的链有且只有一个. 如果x的儿子数量是偶数,肯定只能把边两两配对.如果奇数,那么剩下这一个就和从x头上下来的链在一起即可. 儿子数du[i]-1,花费:(du[i]-…
Description 给定\(N(N\leq 10000)\)个点的树,要求用最少的路径覆盖树边.路径之间可以有交点,不能有交边.问最少需要几条路径以及在第一问的基础上最长的路径最短是多少? Solution 第一问对于每个点考虑它与它的孩子之间的边 如果能两两消掉是最好的,贡献就是\(\frac{deg[i]-1}2\),否则就要额外多出一条边,贡献是\(\frac{deg[i]-1}2+1\). 第二问就是二分答案了 判断\(\leq mid\) 是否可行 可以一遍 \(dfs\) 求出…
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=2067 最少的线段可以贪心地想出来.(结果还是写错了)就是偶数孩子可以自己配对,奇数孩子要带一个上去:算条数的时候在该条拐弯或截止的时候算,就是每个点的度数减1除以2求和,最后加上1表示根节点. 还以为第二问能贪心做呢.结果WA.奇数孩子带一个最小的上去是不行的:偶数孩子都不带上去也是不行的. 于是二分一下答案.结果WA.偶数孩子带一个尽量小的上去还能贪心,奇数孩子并不是用中间那个孩子与别的…
第一问就是Σ(deg[u]-1)/2+1 第二问是二分,判断的时候考虑第一问的贪心规则,对于奇度数的点,两两配对之后一条延伸到上面:对于欧度数的点,两两配对或者deg[u]-2的点配对,然后一条断在这个点,一条延伸上去,按这个树形dp判断一下即可 #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; const int N=…