『联合省选2025集训』『图的连通性进阶』Day3 略解 _

news/2024/12/26 20:15:32/文章来源:https://www.cnblogs.com/SFsaltyfish/p/18634123

前言

我们趋行在人生这个亘古的旅途,在坎河中奔跑,在挫折里涅槃,忧愁缠满全身,痛苦飘洒一地。我们累,却无从止歇;我们苦,却无法回避。

今天是连通性的进阶题目,重点是耳分解,双极定向,以及边三连通分量。

因为调题速度过慢,导致被硬控,所以第二天晚上补的差不多了再来写的。

感觉知识点方面也需要写个东西稍微总结一下,看周末有没有时间和心情吧。

A

简单来说,就是选择边权最小的边让原图满足点双连通。

可以发现,这个边权最小的点双连通实际上就是从最开始一个单独的点,一直加相对于当前的点集的开耳,直到整个图上的点都被加进去,然后保证边权和最小。

显然有一个状压 \(\texttt{DP}\),定义 \(dp_S\) 表示当前点集 \(S\),构成一个点双所需要的最小边权。转移的话就是一直向点集 \(S\) 里加相对于它的开耳,直接枚举这个开耳的点集,然后预处理出这个点集形成开耳所需要的最小边权即可,时间复杂度应该是 \(\mathcal{O}(3^n\times \text{polylog}(n))\)

其实可以考虑稍微优化一下,即不是每次一次性的将整个开耳加进去,而是一个点一个点的加。

即定义 \(dp_{S,i,j}\) 表示上一个加入开耳的点是 \(i\),这个开耳的最后一个点是 \(j\),现在加入开耳的点的集合是 \(S\)。直接枚举 \((i,k)\) 转移,然后当你又一次回到点 \(j\) 的时候,稍微处理一下下一个新开耳的信息就可以了。时间复杂度 \(\mathcal{O}(2^n\times \text{polylog}(n))\)

需要非常注意重边的情况,比如 \(x\to y\to x\) 这种开耳,你就需要在第二次加入 \(y\to x\) 这条边的时候,边权和计算的应该是 \((x,y)\) 之间所有的重边次小的那一个,因为最小的在 \(x\to y\) 已经被使用了。

我的实现是 \(\mathcal{O}(2^n\times n^3)\) 的。

\(\texttt{Code}\)

B

以前应该做过,但是我再看一遍之后貌似还是不会。

首先,不妨设 \(a\le b\le c\),找一下数量关系,那么显然有:\(c\ge \frac{n}{3},a\le b\le \frac{n}{2}\)

另外,我们只需要考虑联通的导出子图点集大小分别为 \(a,b\) 的情况,因为如果你凑出了是 \(c\) 的,那么你可以删点得到 \(a/b\)

观察特殊性质,发现有一档 \(m=n-1\),所以我们先来思考一些树的情况怎么解决。

本质上就是找到一条边 \((x,y)\) 满足 \(x\) 那边的点的个数 \(\ge a\)\(y\) 那边的点的个数 \(\ge b\)

显然可以通过遍历一次树来判断。

但是其实进一步的,我们可以通过更精确的方式来描述这个合法。

我们其实只需要考虑这个树的重心,如果它能找到一个子树的 \(a\le \text{siz} \le \frac{n}{2}\),那么由于 \(n-\text{siz}\ge \frac{n}{2}\),于是合法。

可以发现只要合法,就必然会存在一个方案跟重心有关,所以我们只需要关注这个重心。

考虑如何扩展到一般图。

显然,为了往树上我们刚刚的方法靠近,我们考虑弄出这个图的搜索树,并求出这个搜索树的重心。

如果这个重心已经可以做到存在一个儿子的大小 \(\ge a\) 了,那么就显然合法,按照刚刚的办法做就可以了。

考虑枚举这个重心的儿子,显然在上面的合法情况排除掉之后,有 \(\text{siz}< a\),看从这个儿子的子树里面,经过非树边能到的其他子树。假设当前儿子是 \(x\),可以到达 \(y_1,...y_m\) 这么多颗其他子树。(我们用重心的儿子来表示这些子树,其实就是这个子树的根)我们一直 \(x+y_1+...+y_{M}\),找到最小的 \(M\) 满足当前的 \(x+y_1+..+y_M\ge a\),就不加了,因为当前的显然已经够满足 \(A\) 了。可以发现,我们最多只会花费 \(2\times a\) 去满足 \(A\),因为 \(a\le x+y_1+..y_M\le 2\times a\) 本质上还是因为 \(x,y_1,...y_M\le a\)。可以发现,\(2\times a+b\le a+b+c=n\),故显然可以在剩下的子树中弄出 \(B\)。于是合法。

当然,如果找不到 \(M\) 能够让所有的子树能到的子树的大小之和都到不了 \(a\) 那么就显然是无解的。

注意一下输出方案的细节。

感觉思路很自然,但是我就是想不到啊啊啊。

\(\texttt{Code}\)

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

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

相关文章

12.26日每日总结

昨天在调试51单片机的串口时,发现芯片手册上有一句话,在使用定时器1产生串口的波特率时,定时器1就不能使能了。不是不能用,是直接不让使能了,使能后会出错,导致发送的数据不稳定。 今天继续研究了触摸滑条,发现滑条输出的值为从小到大,如下图所示的样子,这就导致从最上…

Minio使用教程

Minio MinIO 是一个高性能的对象存储服务器,用于构建云存储解决方案。它使用Golang编写,专为私有云、公有云和混合云环境设计。它是兼容Amazon S3 API的,并可以作为一个独立的存储后端或与其他流行的开源解决方案(如Kubernetes)集成。 MinIO 允许你存储非结构化数据(如图…

人工智能基础导论

人工智能基础导论 绪论 人工智能的主要流派符号主义(逻辑主义) 连接主义(仿生学派) 行为主义(控制论)符号主义:数理逻辑→逻辑演绎系统→启发式算法→专家系统→知识工程理论与技术(主流)缺点:符号主义的核心是知识表示,那么对于像感知、形象思维、模式识别等问题,…

搭建 npm 私服

背景 准备搭建一个自己的网站,放些平时练手的 demo,如果是不同项目,想要保持风格一致,或是要用到一些工具方法,就要在每个项目复制一份,不是很好维护,于是就想要搭建一个自己的 npm 私服 安装 verdaccio 1 安装 verdaccio,这是一个开源的私有 npm 注册中心,要注意的是…

C# WPF PrintDialog 打印(2)

前面https://www.cnblogs.com/yinyu5/p/18633910使用PrintVisual方法只打印了可见部分的元素,所以这里改为使用PrintDocument方法来进行打印。 需要引用System.Printing.dll 界面代码:1 <Window x:Class="WpfApp123.MainWindow"2 xmlns="http://sc…

Redis可视化工具推荐:Another Redis Desktop Manager使用教程与下载

Redis是一种高性能的Key-Value数据库,被广泛应用于缓存、消息队列等场景。尽管Redis的命令行工具功能强大,但对于许多开发者而言,使用一款可视化工具可以大大提高操作效率和用户体验。今天为大家推荐一款功能强大的Redis可视化工具——Another Redis Desktop Manager,并提供…

RISC-V篇-VSCode+qemu+gdb可视化调试Linux Kernel

https://zhuanlan.zhihu.com/p/4185359719本文发布于微信公众号:Linux底层小工,欢迎关注,获取更多原创技术文章! “VSCode+qemu+gdb调试OpenSBI确实很爽,那怎能少了调试kernel呢~~” 01 VScode调试MMU开启之前的kernel 有了调试OpenSBI的基础,再调试kernel,那设置相当简…

中考阅读理解深入逻辑分析-006 A Streams Journey to the Sea 一条小溪通往大海的旅程

文章正文 A little stream ran down from a high mountain far, far away through many villages and forests, until it reached a desert. The stream then thought,“I’ve been through countless difficulties. I should have no problem crossing the desert!”But as sh…

2024-2025-1 20241322 《计算机基础与程序设计》第十四周学习总结

2024-2025-1 20241322 《计算机基础与程序设计》第十四周学习总结 作业信息这个作业属于哪个课程 https://edu.cnblogs.com/campus/besti/2024-2025-1-CFAP这个作业要求在哪里 https://www.cnblogs.com/rocedu/p/9577842.html#WEEK14这个作业的目标 自学教材《C语言程序设计》…

Chrome 或引入 Gemini AI 功能「Glic」,需访问麦克风;理想同学 App 即将上线支持语音交流、识物

开发者朋友们大家好:这里是 「RTE 开发者日报」 ,每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE(Real-Time Engagement) 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文章 」、「有看点的 会议 」,但内容仅代表编辑…

洛谷题单指南-线段树的进阶用法-P3834 【模板】可持久化线段树 2

原题链接:https://www.luogu.com.cn/problem/P3834 题意解读:静态区间第k小问题,可持久化线段树(也称为主席树)模版题。 解题思路: 一、朴素想法:如何求完整区间[1,n]第k小 1、权值线段树 设n个数构成序列a,b数组代表a中元素出现的次数,即b数组的构建方式为对每一个a[…

FTP一键安装脚本(linux版)

简述:linux版权限可能会不容易理解,可参考windwos做为基础。一、FTP(linux版) 1. ftp详解 简介: vsftpd 是“very secure FTP daemon”的缩写,安全性是它的一个最大的特点。 vsftpd 是一个 UNIX 类操作系统上运行的服务器的名字,它可以运行在诸如 Linux、BSD、Solaris、…