我们知道,wqs 二分是通过二分斜率,通过找到切凸包的切点来寻找答案(至少我目前写的简单题是这样的)。那么所谓切凸包的几何意义是什么?我们以 LG P5633 最小度限制生成树 为例。
对于样例,我们设 为节点 恰为 度的情况下最小生成树的权值,画出凸包。
由于偏移量是平滑的,直觉上看,当偏移量不断变化时,所形成的最小生成树的权值也应当是平滑变化的。结合偏移量与凸包之间斜率的关系,我们可以画出下面这张图:
为什么?首先,赋予 边的偏移量越小,意味着 边的权值越小,那么构造 时就会倾向于选用更多的 边。其次,证一个引理:无论赋予 边的偏移量多少,若钦定了生成的 中含 边的数量不变(即钦定生成的必须是恰含 条 边的情况下的 ),那么它的形态一定不会变(若同时有多个 ,那么偏移量变化后也都仍然是 )。这是显然的,若偏移量加上了 ,那么对于所有含 条 边的最小生成树,它们的权值都加上了 ,那么显然原来最小的现在仍然最小,故形态不变。那么,对于原来的凸包,我们将凸包上的点的纵坐标对应到纵轴上。由引理,我们知道将 射影到纵轴上,过该点任作一条直线 ,其与直线 的交点的纵坐标就是赋予 边的偏移量为 ,且恰选 条 边时最小生成树的权值,这是因为,交点的纵坐标为 ,就对应着 条 边加上总偏移量 的情况下的最小值。那么对于一个斜率 ,我们将纵轴上每个射影的点都做一条斜率为 的直线,这些直线交 中纵坐标最小的交点,对应的就是当前偏移量为 的情况下最小生成树的权值:
红线表示当点在红线上时,它的纵坐标是最小的。这张图反映了当偏移量减小时, 会倾向选用更多的 边(即与横坐标更大的直线相交的纵坐标更小),且生成的最小生成树权值的变化是平滑的(纵坐标最小的点变化时红线组成了连续段)。于是我们应该研究这些红线跳变的纵坐标,此时会发现:对于横坐标为 的红线,它由这个点所对应的 与凸包相邻两点的斜率决定,是将凸包上的点 射影到纵轴上后,过射点分别作斜率为原本的点与相邻两点间斜率的相反数的直线与 的交点组成的线段。或者另一种生成方式:过凸包上的一点作所有切线与纵轴的交点组成的线段,对应到原本的横坐标上。例如只考虑点 对应的红线:
图中 ,。
为什么?首先显然当 不断减小时,交点纵坐标是在减小的。并且由于这是个下凸壳,凸壳间的斜率是不断增大的,那么其斜率的相反数不断减小。射点都在纵轴上,斜率相同时,其交的直线距离纵轴越远(即 越大),根据相似对应,其交点的变化速率也应当越快。那么我们只需考虑相邻两个交点在什么时候纵坐标相同。不妨考虑上图中的 、 两点:设 ,,当 时,有 ,,两点纵坐标相等,于是当 减小时, 即从此刻开始超过 ,变成新的纵坐标最小的点。这或许是 wqs 二分中二分的斜率的意义:当斜率减小至超过某数 时,选取的关键边过多,于是增加斜率;反之减小斜率,根据所交的点减去 即可还原出凸包上的点,其成立的关键应当就是图中红边的连续性,而答案凸包中相邻的斜率的相反数就对应着此时关键边数的跳变。
关于凸包中相邻两点斜率的几何意义,我的想法是,不妨设凸包中一点为 ,另一点为 ,那么它们间的斜率为 。假设当 时两点对应的红线发生了跳变,那么 ,相减得 , 的意义应当是若恰多选一条关键边,那么方案的价值增加了 ,而 时发生跳变,意味着当 时恰多选一条关键边,原有 条关键边,那么 与 是相同的,感性理解,此时从这点“减去” 与 恰好差了 。所以 的生成会跟 有关。所谓的二分斜率,实际上二分的是答案凸包上斜率的相反数( 与 , 的区别, 是答案凸包上的斜率, 是偏移量)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】