[COCI2015-2016#2] DRZAVA

news/2025/1/1 11:10:15/文章来源:https://www.cnblogs.com/YzaCsp/p/18639437

思路

先把赛时想法搬一部分过来


转化题意, 对于 \(n\) 个带权 \(k\) 的点, 任意两点 \(i, j\) 之间有双向连边, 其边权为 \(w_{i, j} = d_{i, j}\) , 求一最小阈值 \(C\) , 满足对于所有 \(w \leq C\) 的边连接后, 存在一个连通块 \(G\), 使得

\[\sum_{i = 1}^{\lvert G \rvert} (a_i \cdot k_i) \equiv 0 {\pmod K} , a_i \in \{0, 1\} \]

容易发现的是, 如果你要选择一些确定的点, 使其在同一连通块下, 那么你是可以求出最小阈值 \(C\) 的, 具体的, 我们可以二分之后 \(\rm{check}\) , 这个是 \(\mathcal{O} (n \log V)\) 的, 其中 \(V\) 是值域, 当然你也可以在确定 \(C\) 的情况下检查是否让老板开心

现在问题转化成了, 如何在一个图的连通块中, 判断是否可能有一些点的点权之和为 \(K\) 的倍数, 这个用可行性 \(\rm{dp}\) 可以解决

所以我们初步可以有一个暴力, 首先实数二分 \(V\) , 在这个基础上你把图的连通块跑出来 \(\mathcal{O} (n)\), 然后对于每个连通块进行可行性 \(\rm{dp}\)

好像还没说可行性 \(\rm{dp}\) 该怎么做

\(dp_{i, j}\) 表示考虑到第 \(i\) 个点权, 模 \(K\) 的结果是否能达到 \(j\) , 其中 \(dp_{i, j} \in \{0, 1\}\)

显然有转移

\[\begin{align*} dp_{i, j} \gets dp_{i - 1, j} \\ dp_{i, (j + k_i)} \gets dp_{i - 1, j} \end{align*} \]

其中 \(j\) 随时取模, 甚至可以滚掉 \(i\)


总结一下, 首先实数二分当前阈值 \(\mathcal{O} (\log V)\) , 然后跑当前图的情况和可行性 \(\rm{dp}\) \(\mathcal{O} (n\omega)\) , 其中 \(\omega = 30\) , 然后直接判断

总复杂度 \(\mathcal{O} (n \log V)\) , 可以通过本题

写的时候遇到了问题, 不能用 \(\mathcal{O} (n^2)\) 的方式建图, 我们需要在不计算原图的情况下找到连通块, 好像也不影响实现


这个思路看起来复杂度正确, 但是为什么被卡了呢?

分析复杂度, 你发现 \(\rm{bfs}\) 的复杂度就已经趋势了, \(\mathcal{O} (n + n^2)\) 没得跑

考虑怎么优化, 需要一点注意力

你发现根据鸽巢原理, 如果一个连通块的大小 \(\geq k\) , 那么一定可以凑成一个 \(k\) 的倍数

那么我们每次特判一下这个, 发现 \(\rm{bfs}\) 还是很慢, 所以我们要用类似于平面最近点对的方法, 来优化找点

怎么找点优化更大, 这里给出两种方法

确定性算法

同上你知道当一个连通块的大小 \(\geq k\) 时已经有答案了, 所以最大可以有用的连边只有 \(nk\) 级别

考虑用 \(\rm{set}\) 维护 「横坐标和当前点差距不超过 \(C\)」 的点集, 按纵坐标排序
然后对于一个点的连边,找出纵坐标范围在 \([y - C, y + C]\) 之间的所有点,然后依次检验连边

考虑这样做的复杂度

对于一个点, 我们选择的范围 \(\rm{belike}\) :

pAx28Et.png

首先你发现 \(3\) 部分之内的点的个数不超过 \(k\) , \(1, 2\) 两部分各不超过 \(k\)

所以最多是 \(3k\) 个点参与枚举

容易发现时间复杂度是正确的

随机化算法

排序, 旋转, 乱搞, 反正能过

实现

框架

同赛时, 稍微修改一些东西

代码

难点在 \(\rm{set}\) 维护, 也不复杂, 为了大局考虑先不写了

总结

倍数型问题的常见解法

善于通过二分答案来转化成判断类问题

考虑答案的上界常常可以优化问题的复杂度

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

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

相关文章

The End

一、学期回顾 1.1 回顾你对于软件工程课程的想象 根据你对课程目标和期待,回顾目前的所学所练所得,在哪些方面达到了你的期待和目标,哪些方面还存在哪些不足,为什么? 达成的目标与期待理论与实践结合: 课程的最大目标之一是将软件工程的理论知识应用到实践中。在这一点上…

关于本站

我是 fush,一个很菜的 oier。 这里,我只想分享一些自己在学习记录。 由于本人较菜,有哪里写的不严谨的地方欢迎指出。 除了下面几个账号(本人的),如果要转载请写明出处,谢谢。 洛谷

从 Leafy-Tree 到 WBLT

更好的阅读体验。 UPD:2024/12/04 添加序列操作 UPD:2024/12/10 添加可持久化 前言 前面说过 FHQ-treap 的缺点在于常数。 这次篇文章要讲解 WBLT,码量与 FHQ-treap 差的不多,结构与线段树类似。 也可以分裂合并(不推荐),可持久化,但常数远小于 FHQ-treap。 美中不足的…

快消零售业的创新之路:智能AI助力员工培训SOP高效构建

在快速消费品零售行业,员工培训是提升服务质量、增强竞争力的重要手段。然而,传统员工培训方式往往存在培训周期长、效果难以评估等问题,难以满足快消零售行业对于高效、精准培训的需求。随着人工智能技术的不断发展,智能AI在员工培训中的应用逐渐受到重视,特别是在构建员…

django rest framework 视图类关系图

纸上得来终觉浅,绝知此事要躬行

挖掘内部知识库在员工培训与发展中的巨大潜力

在当今快速变化的商业环境中,企业的核心竞争力越来越依赖于其员工的技能水平和持续学习能力。员工培训与发展不再是简单的技能传授,而是需要构建一个能够激发潜能、促进知识共享与创新的智慧学习生态。内部知识库,作为这一生态的核心组成部分,其潜力在员工培训与发展中日益…

数学专题 2024.12

数学专题 2024.12 Luogu 3175 按位或 刚开始你有一个数字 \(0\),每一秒钟你会随机选择一个 \([0,2^n-1]\) 的数字,与你手上的数字进行或(C++,C 的 |,pascal 的 or)操作。选择数字 \(i\) 的概率是 \(p_i\)。保证 \(0\leq p_i \leq 1\),\(\sum p_i=1\) 。问期望多少秒后,你…

AGENT AI-surveying the horizons of multimodal interaction

(转自https://www.cnblogs.com/hifrank/p/18416222) 标题:AGENT AI: surveying the horizons of multimodal interaction作者:Zane Durante, Qiuyuan Huang, Naoki Wake, Ran Gong, Jae Sung Park, Bidipta Sarkar, Rohan Taori, Yusuke Noda, Demetri Terzopoulos, Yejin …

一些数学证明

货舱选址问题 结论:发现对于一些数轴上的点,想要让其和某一点的距离之和最小,要取中位数(偶数/奇数都可以取n/2计算)

【PHP应用】使用http通道连接数据库

#Navicat #PHP #MySQL 办公网和内网的网络并不是完全互通的,內网只支持特定端口范围供办公网访问,因此如果数据库的端口不在这个端口范围内,那么就无法在mac上使用mysql客户端连接内网的数据库。 在开发过程中,有很多要连接的数据库,有的端口在特定端口范围,有的不在,平…

【JAVA代码审计】华夏ERP_V2.3

免责声明 由于传播、利用本公众号菜狗安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号菜狗安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,会立即删除并致歉。一、项目介绍二、项目搭建三、漏洞挖掘3.1 多处sql…

基坑监测识别摄像机

基坑监测识别摄像机的应用能够有效监控基坑施工的过程,提高施工的安全性和效率。同时,它也能减少施工事故的发生,降低施工风险,保障工程的正常进行和人员的安全。总之,基坑监测识别摄像机是一种有益的施工监测工具,可以有效保障基坑施工的安全和稳定,提高施工质量和效率…