首页 > 其他分享 >关于 wqs 二分的几何意义的思考

关于 wqs 二分的几何意义的思考

时间:2023-10-28 09:56:01浏览次数:442  
标签:二分 纵坐标 Delta wqs 最小 偏移量 凸包 斜率 几何

我们知道,wqs 二分是通过二分斜率,通过找到切凸包的切点来寻找答案(至少我目前写的简单题是这样的)。那么所谓切凸包的几何意义是什么?我们以 LG P5633 最小度限制生成树 为例。

对于样例,我们设 \(f(x)\) 为节点 \(s\) 恰为 \(x\) 度的情况下最小生成树的权值,画出凸包。

由于偏移量是平滑的,直觉上看,当偏移量不断变化时,所形成的最小生成树的权值也应当是平滑变化的。结合偏移量与凸包之间斜率的关系,我们可以画出下面这张图:

为什么?首先,赋予 \(s\) 边的偏移量越小,意味着 \(s\) 边的权值越小,那么构造 \(\text{MST}\) 时就会倾向于选用更多的 \(s\) 边。其次,证一个引理:无论赋予 \(s\) 边的偏移量多少,若钦定了生成的 \(\text{MST}\) 中含 \(s\) 边的数量不变(即钦定生成的必须是恰含 \(k\) 条 \(s\) 边的情况下的 \(\text{MST}\)),那么它的形态一定不会变(若同时有多个 \(\text{MST}\),那么偏移量变化后也都仍然是 \(\text{MST}\))。这是显然的,若偏移量加上了 \(\Delta\),那么对于所有含 \(k\) 条 \(s\) 边的最小生成树,它们的权值都加上了 \(k \cdot \Delta\),那么显然原来最小的现在仍然最小,故形态不变。那么,对于原来的凸包,我们将凸包上的点的纵坐标对应到纵轴上。由引理,我们知道将 \((x_0, f(x_0))\) 射影到纵轴上,过该点任作一条直线 \(y = kx + f(x_0)\),其与直线 \(x = x_0\) 的交点的纵坐标就是赋予 \(s\) 边的偏移量为 \(k\) ,且恰选 \(x_0\) 条 \(s\) 边时最小生成树的权值,这是因为,交点的纵坐标为 \(f(x_0) + kx_0\),就对应着 \(x_0\) 条 \(s\) 边加上总偏移量 \(kx_0\) 的情况下的最小值。那么对于一个斜率 \(k\),我们将纵轴上每个射影的点都做一条斜率为 \(k\) 的直线,这些直线交 \(x = x_{i}\) 中纵坐标最小的交点,对应的就是当前偏移量为 \(k\) 的情况下最小生成树的权值:

红线表示当点在红线上时,它的纵坐标是最小的。这张图反映了当偏移量减小时,\(\text{MST}\) 会倾向选用更多的 \(s\) 边(即与横坐标更大的直线相交的纵坐标更小),且生成的最小生成树权值的变化是平滑的(纵坐标最小的点变化时红线组成了连续段)。于是我们应该研究这些红线跳变的纵坐标,此时会发现:对于横坐标为 \(x_0\) 的红线,它由这个点所对应的 \(f(x_0)\) 与凸包相邻两点的斜率决定,是将凸包上的点 \((x, f(x_0))\) 射影到纵轴上后,过射点分别作斜率为原本的点与相邻两点间斜率的相反数的直线与 \(x = x_0\) 的交点组成的线段。或者另一种生成方式:过凸包上的一点作所有切线与纵轴的交点组成的线段,对应到原本的横坐标上。例如只考虑点 \(C\) 对应的红线:

图中 \(k_{EF} = -k_{BC}\),\(k_{EG} = -k_{CD}\)。

为什么?首先显然当 \(k\) 不断减小时,交点纵坐标是在减小的。并且由于这是个下凸壳,凸壳间的斜率是不断增大的,那么其斜率的相反数不断减小。射点都在纵轴上,斜率相同时,其交的直线距离纵轴越远(即 \(x_0\) 越大),根据相似对应,其交点的变化速率也应当越快。那么我们只需考虑相邻两个交点在什么时候纵坐标相同。不妨考虑上图中的 \(B\)、\(C\) 两点:设 \(B'(x_0, f(x_0) + k \cdot x_0)\),\(C'(x_0 + 1, f(x_0 + 1) + k \cdot(x_0 + 1))\),当 \(k = -(\displaystyle \frac{f(x_0 + 1) - f(x_0)}{x_0 + 1 - x_0}) = f(x_0) - f(x_0 + 1)\) 时,有 \(B'(x_0, (x_0 + 1)f(x_0) - x_0f(x_0 + 1))\),\(C'(x_0 + 1, (x_0 + 1)f(x_0) - x_0f(x_0 + 1))\),两点纵坐标相等,于是当 \(k\) 减小时,\(C'\) 即从此刻开始超过 \(B'\),变成新的纵坐标最小的点。这或许是 wqs 二分中二分的斜率的意义:当斜率减小至超过某数 \(k_0\) 时,选取的关键边过多,于是增加斜率;反之减小斜率,根据所交的点减去 \(\text{关键边数} \cdot k\) 即可还原出凸包上的点,其成立的关键应当就是图中红边的连续性,而答案凸包中相邻的斜率的相反数就对应着此时关键边数的跳变。

关于凸包中相邻两点斜率的几何意义,我的想法是,不妨设凸包中一点为 \((x, f(x))\),另一点为 \(x + 1, f(x) + \Delta\),那么它们间的斜率为 \(\Delta\)。假设当 \(k = k_0\) 时两点对应的红线发生了跳变,那么 \(f(x) + xk_0 = f(x) + \Delta + (x + 1)k_0\),相减得 \(\Delta = -k_0\),\(\Delta\) 的意义应当是若恰多选一条关键边,那么方案的价值增加了 \(\Delta\),而 \(k = k_0\) 时发生跳变,意味着当 \(k = k_0\) 时恰多选一条关键边,原有 \(x\) 条关键边,那么 \(f(x) + xk_0\) 与 \(f(x) + \Delta + (x + 1)k_0\) 是相同的,感性理解,此时从这点“减去” \((x + 1)k_0\) 与 \(xk_0\) 恰好差了 \(\Delta\)。所以 \(k_0\) 的生成会跟 \(\Delta\) 有关。所谓的二分斜率,其实二分的是偏移量的相反数(\(z_1 = f(x_0) - k_1x_0\) 与 \(z_2 = f(x_0) + k_2x_0\),\(k_1 = -k_2\) 的区别,\(k_1\) 是答案凸包上的斜率,\(k_2\) 是偏移量)。

标签:二分,纵坐标,Delta,wqs,最小,偏移量,凸包,斜率,几何
From: https://www.cnblogs.com/wf715/p/wqs-geometry.html

相关文章

  • P5537 【XR-3】系统设计 题解-哈希+线段树二分
    20231026P5537【XR-3】系统设计题解-哈希+线段树二分这个东西怎么会和哈希有关?!直接寄。Statement这个系统首先需要输入一棵\(n\)个点的有根树和一个长度为\(m\)的序列\(a\),接下来需要实现\(q\)个操作。操作分两种:1xlr表示设定起点为有根树的节点\(x\),接下来......
  • 二分查找又称折半查找(Binary Search)
    ⛩️博主主页:@威化小餅干......
  • 代码随想录算法训练营第一天 | 704. 二分查找,27. 移除元素
    今日学习的文章链接和视频链接https://programmercarl.com/数组理论基础.html二分查找二分查找最开始看到感觉比较简单,随手写出来了左闭右闭的情况,从来没想过左闭右开的情况,涨了见识varsearch=function(nums,target){letlow=0;letheigh=nums.length;......
  • 二分算法
    while(l+1<r){intmid=l+r>>1;if(check(mid))l=mid;elser=mid;}   classSolution{public:intfindRadius(vector<int>&houses,vector<int>&heaters){intn=houses.size(),m=heaters......
  • 代码随想录第一天 | 704. 二分查找 、 27. 移除元素
    https://leetcode.cn/problems/binary-search/第一眼看到题目的时候下意识直接搞了暴力搜索(一个一个对比),后来觉得时间复杂度太高了,就搞了二分法,之后再看文章,思路透彻了很多,因为我之前写二分法都是凭感觉,没有仔细琢磨过 https://leetcode.cn/problems/remove-element/帅!otto ......
  • 二分答案
    二分答案使用条件(最大的最小,最小的最大)命题可以被归纳为找到使得某命题\(P(x)\)成立(或不成立)的最大(或最小)的\(x\)。把\(P(x)\)看作一个值为真或假的函数,那么它一定在某个分界线的一侧全为真,另一侧全为假。可以找到一个复杂度优秀的算法来检验\(P(x)\)的真假。好理解......
  • 几何内核与数学
    几何内核可以看成一个数学库的子集,只是在几何图形上的应用。学习几何内核的过程类比于学生时代掌握的数学工具。几何内核与数学1概述从1950年第一台图形显示器(美国麻省理工大学MIT旋风I号WhirlwindI)的诞生,到1962年MIT林肯实验室的IvanE.Sutherland发表题为“Sket......
  • 二分板子的一个易错点
    while(l<=r){mid=l+(r-l)>>1;......}这样是错误的!由于>>的优先级问题,应用如下格式。while(l<=r){mid=l+((r-l)>>1);......}......
  • <学习笔记> 二分图
    二分图最大匹配:定义:给定一个二分图\(G\),即分左右两部分,各部分之间的点没有边连接,要求选出一些边,使得这些边没有公共顶点,且边的数量最大。方法:Dinic/染色二分图的最小顶点覆盖定义:假如选了一个点就相当于覆盖了以它为端点的所有边。最小顶点覆盖就是选择最少的点来覆盖所有的......
  • 三维模型数据拼接中的几何坐标变换方法实现
    三维模型数据拼接中的几何坐标变换方法实现   利用几何坐标变换后纠正技术实现倾斜摄影三维模型数据的拼接是一种常用的方法。下面将详细介绍如何利用这一技术实现拼接过程。1、数据准备:首先,需要获取不同视角下的倾斜摄影影像数据。这些影像应该覆盖同一场景,并且在重叠......