首页 > TAG信息列表 > BZOJ2654

BZOJ2654 tree (wqs二分)

题目描述 给你一个无向带权连通图,每条边是黑色或白色。让你求一棵最小权的恰好有need条白色边的生成树。 题目保证有解。   一个最小生成树问题,但是我们要选need条白边,我们用g(i)表示选取i条白边的最优方案(生成树的权值最小),那么可以大致猜出g(i)是关于i的一个下凸函数,可以发现斜

WQS二分 学习笔记 + 例题([BZOJ2654]Tree、[联考2018]林克卡特树)

目录 问题类型WQS二分思路形象地说板题题意 & 解法CODE 省选题题意 & 解法CODE 问题类型 形如“恰好取 k 个……时的最优答案(并非具体方案)”的问题。 保证存在合法方案。 WQS二分思路 我们先把限制去掉,这时候最终的方案肯定不一定取了 k 个该物品, 假设最优方案该物品个

BZOJ2654:Tree

题面:https://www.lydsy.com/JudgeOnline/problem.php?id=2654 题解: 我们考虑求最小生成树算法kruskal的这个过程。 建立一个平面直角坐标系,\(x\)轴意义为选了多少条边,\(y\)轴是代价。 可以发现,因为kruskal算法先将所有边排序,所以随着\(x\)的增大, \(y\)的增大幅度也更大了。形式化

[bzoj2654]tree

可以发现k条白边的最小生成树可以用:1.求出黑边的最小生成树;2.贪心选择[白边-对应环上最大的黑边]最小的加入;3.重复2操作k次考虑如何模拟这个过程,由于每一次贪心的代价是单调递增的,所以可以二分确定最后一次代价mid,即每一次贪心都有白边-替换边<=mid如果将所有白边边权减去mid(记为

「BZOJ2654」tree

「BZOJ2654」tree 最小生成树+二分答案。 最开始并没有觉得可以二分答案,因为答案并不单调啊。 其实根据题意,白边的数目肯定大于need条,而最小生成树的白边数并不等于need(废话),可以二分将每条白边的权值+mid,这样就可以控制最小生成树中白边的条数, 对于一个mid,将所有的白边权值加mid,然

BZOJ2654 tree

一开始打了个贪心,求最小生成树,白边多就把权值最大的白边干掉,白边少就把权值最大的黑边干掉,因为数据肯定有解嘛。结果大点TLE,小点只过了一个。事实证明,贪心有时真的不能瞎用。 其实这个二分还是挺有道理的,给白边加权值,则入选白边会减少,给白边减权值,则入选白边增加,二分枚举这个权值,白