【学习笔记】wqs二分

news/2025/3/15 11:18:10/文章来源:https://www.cnblogs.com/aquizahv/p/18773411

其实写这个主要是想解释一下它的原理,教程、习题什么的网上都有,比如这个。

就拿这题来讲吧。

首先我们画出一个函数 \(f(x)\) 表示 \(s\) 的度恰好为 \(x\) 时,最小生成树的权值和。

当然,这个函数只会取在某一些整点上,我们把它连起来就行了。

然后你会发现它是下凸的(凹的)。(证明不太会,在这里致歉,但我觉得这个记住就好了。另外我觉得上面博客链接的证明也是有点问题的。)

一个例子:

image

因为它是下凸的,所以两点之间的斜率是从左往右递增的。wqs二分的思想就是二分这个斜率,然后就能找到需要的 \(x\),比如这道题就要求度恰好为多少。

那这个题要怎么实现呢?我们先随便找一个斜率 \(k\) 试试吧:

image

然后我们发现那个与 \(y\) 轴交点最低的直线所属的点就是这个斜率属于的 \(x\)

设过 \(x\) 位置的点的直线交 \(y\) 轴与 \((0,b_x)\),则有 \(f(x)=kx+b_x\),即 \(b_x=f(x)-kx\)

因为要最小化 \(b_x\),所以要求 \(min\{f(x)-kx\}\)\(x\)

然后发现这个东西是可以构造的!考虑一个 \(s\) 的度为 \(x\) 的方案,那么我们只要让与 \(s\) 相连的边都加上 \(-k\) 就是 \(b_x\)

因此,想要找到最小的 \(f(x)-kx\),只需给所有与 \(s\) 相连的边加上 \(-k\),跑一遍 mst,最后看有几个与 \(s\) 相连的边就好了。

二分斜率是 \(\mathcal{O}(\log w)\) 的,\(w\) 是边权范围。用 kruskal 求 mst 是 \(\mathcal{O}(m\log m + m\alpha(m))\) 的。但是实际上不用重新排序,可以用双指针把 \(\log\) 去掉。

所以总的是 \(\mathcal{O}(m\alpha(m)\log w)\)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/899098.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在vue2中引用高德地图,外卖骑手的路线规划

参照路径规划-参考手册-地图 JS API 1.4 | 高德地图APIAMap.RidingAMap.Riding骑行路径规划服务,提供起始、终点骑行路线查询服务。用户可以通过自定义回调函数取回并显示查询结果。若服务请求失败,系统将返回错误信息。 相关示例:位置经纬度 + 骑行路线规划-骑行路径规划-示…

软件分析——OBS Studio

课程社区链接:首页 - 2025年春季软件工程(罗杰、任健) - 北京航空航天大学 - 班级博客 - 博客园 (cnblogs.com) 作业要求链接:[I.2] 个人作业:软件案例分析 - 作业 - 2025年春季软件工程(罗杰、任健) - 班级博客 - 博客园 (cnblogs.com) 课程目标:让学生掌握软件开发的…

JDK7-时间类、时间格式化类--java进阶day07

1.Date类:表示时间的类 1.Date常用的构造方法.2.Date常用的成员方法1.getTime:返回从时间原点到对象设定的时间之间的时间2.setTime:将对象的时间设置为setTime里的时间 d3是此刻的时间,被setTime设置为了时间原点2.SimpleDateFormat类:时间格式化类 Date类默认的格式不好看…

RN里遇到初始计算值是一样的,布局位置却不一致的问题

在tabs切换下面的小动画 但在页面上显示确是这样的,只有切换回来一次后才显示正常。计算结果确始终都是7 问了下AI,说是,在RN中,布局计算是异步的。在组件首次渲染时,即使布局事件已经触发并且获取到了layout对象,实际DOM可能还没有完全应用这些尺寸。这会导致第一次动画…

idea安装激活图文详细教程_激活至永久_亲测有效

一、安装 IDEA打开下载好的安装包,按照提示完成安装。 image.png自定义安装路径,我这里安装在了 E:\ 盘下,继续点击下一步按钮: image.png image.png安装完成后,暂时不要启动程序,直接关闭它。三、补丁安装步骤 1. 下载补丁 点击以下链接获取补丁:点击获取补丁文件。htt…

『Plotly实战指南』--绘图初体验

今天,打算通过绘制一个简单的散点图,来开启我们 Plotly 绘图的初次尝试。 本文目的不是介绍如何绘制散点图,而是通过散点图来介绍Plotly 绘图的基础步骤。 1. 绘制散点图:初探 Plotly 散点图是展示变量关系的基础图表,在Plotly中,绘制散点图非常简单。 以下是一个示例代码…

分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!

前言 在人工智能技术日新月异的今天,DeepSeek-R1模型以其卓越的性能和广泛的应用场景,成为了众多用户心中的明星模型。它不仅具备强大的日常写作、翻译、问答等基础功能,更引入了独特的深度思考模式,结合联网搜索能力,在编程、解题、文献解读等复杂任务中展现出卓越的推理…

读书笔记:Spring实战

第1部分 Spring基础 第1章 Spring起步 3 1.1 什么是Spring 4 Spring 的核心是一个 容器,通常称为 Spring 应用上下文,用于创建和管理应用程序组件。这些组件也可以称为bean,会在 Spring 应用上下文中装配在一起,从而形成一个完整的应用程序。 将 bean 连接在一起的行为是…

信息检索系统评估指标的层级分析:从单点精确度到整体性能度量

在构建搜索引擎系统时,有效的评估机制是保证系统质量的关键环节。当用户输入查询词如"machine learning tutorials python",系统返回结果列表后,如何客观评估这些结果的相关性和有效性?这正是信息检索评估指标的核心价值所在。 分析用户与搜索引擎的交互模式,我…

[题目记录] CF1793F Rebrending

一道小清新支配对数据结构 , 非常轻松娱乐的同时足够educational , 好题 .题意 一个 \(n\) 个数的序列 , \(q\) 次询问 . 每次问区间 $ [l,r]$ 中选择两个数,他们的差的绝对值最小是多少 . 题解 注意到这道题不是很好用传统的数据结构维护 . 但是这个形式存在很明显的支配关系…