当前位置: 首页 > news >正文

阅读《记录一类分治方法》笔记

阅读《记录一类分治方法》笔记

题一

\(n\) 个点的无向图,边有边权。\(q\) 次操作,每次操作是添加/删除一条边、修改一条边的边权、查询最小生成树这四种之一。

前言

其实只看了题一,后面都还没看呢。

看到这个感觉和 P7457 [CERC2018] The Bridge on the River Kawaii 很像,感觉很牛。想看看这个做法能不能推广到这题。

然后脑子有些混乱,觉得很能推广啊,想写一发代码。然后代码写完发现 P7457 是询问两点连通性。这和最小生成树不一样。很搞笑了。

所以只能再开一篇把写的东西搬过来了。

思路

原文对我来讲有些简略,这里会讲的更详细一点。

考虑我们有 \(O(m+q)\) 条边,每条边在一个时间区间内有权值 \(w_i\),在其他时刻权值为 \(inf\),求最小生成树。离线。

设边的全集是 \(E\),存在一些时刻权值是 \(inf\) 的边集是 \(Q\)

\(Q\) 里所有边的权值设为 \(-inf\),跑一遍最小生成树,选上的 \(E\) 里面的边无论任何情况都是必选的。所有可以缩掉这些必选边。这样我们的点数变成了 \(O(|Q|)\)

\(Q\) 里所有边的权值设为 \(inf\),跑一遍最小生成树,没有选上的 \(E\) 里面的边无论任何情况都不会被选择。所以可以删掉这些没用的边。这样我们的边数又变成 \(O(|Q|)\) 了。

对于当前分治区间,集合 \(E\) 定义为所有时间区间包含了整个分治区间的边。\(Q\) 定义为所有时间区间没有包含整个分治区间的边。

按照上面的方法,我们可以把点数和边数都变成 \(O(|Q|)\)

\(Q\) 有多少条边?因为每次操作只会影响一条边,并确定这条边的时间区间的左/右端点。所以存在一个端点在当前分治区间内的边的数量,关于分治区间长度线性,即 \(O(len)\)

既然我们保证了分治区间的点数和边数,那么每个分治区间把已经可以确定的点和边确定,有效的点和边留下即可。

总时间复杂度 \(O(q \log q)\)(并查集复杂度当常数看了)。

http://www.gsyq.cn/news/22507.html

相关文章:

  • CF2140E2
  • 实验指导-基于阿里云Serverless应用引l擎SAE的服务部署迀移 - 详解
  • 夜莺监控设计思考(二)边缘机房架构思考
  • 德州东站换乘攻略(仅供参考)
  • Date 2025.10.6
  • macOS 双开/多开微信WeChat完整教程(支持 4.X 及以上版本) - 实践
  • 初识pytorch:更新网络参数的反向传播、损失函数和优化器
  • Composition API 与 React Hook 很像,区别是什么?
  • cc
  • 普源精电RIGOL DS2202A示波器保存波形到CSV文件过慢解决方法:保存为WFM格式、通过LAN接口使用SCPI+PyVISA控制
  • 动手学深度学习——引言
  • CF1989E Distance to Different
  • 给档案装上“智慧大脑”:文档抽取技术的四大赋能场景
  • P11816QOJ1250 Pionki 轮廓线DP
  • Bug——PaddleX人脸识别报错:Process finished with exit code -1073741819 (0xC0000005) - 教程
  • linux系统scatter/gather I/O技术
  • Joeys shell
  • 软件工程学习日志2025.10.16
  • Apifox 9 月更新| AI 生成接口测试用例、在线文档调试能力全面升级、内置更多 HTTP 状态码、支持将目录转换为模块 - 实践
  • window电脑开启hyperV虚拟化功能后导致本地服务端口被占用问题处理方案
  • 初识pytorch:网络骨架中的填充之各种层
  • Day5字符型
  • 深入解析:从 Vercel 构建失败谈 Git 大小写敏感性问题:一个容易被忽视的跨平台陷阱
  • 完整教程:Logit论文阅读
  • 前端快速开发工具推荐与实战 让开发速度提升 3 倍的完整工具链
  • Matlab选择常见颜色
  • 2025 年防静电地板源头厂家最新推荐榜单:权威品牌实力展现,助力各行业精准挑选优质产品
  • HyperWorks许可状态监控
  • 2025 年激光焊锡源头厂家最新推荐排行榜:覆盖多行业需求,助力企业精准挑选优质设备供应商
  • 客户案例 | 未来生物甄知科技,在SAP架构中搭建IT运维智能引擎