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

题解:P9867 [POI 2021/2022 R2] kon

P9867 [POI 2021/2022 R2] kon

Part. 0

直接暴力建边是 \(O(n^2)\) 的。

考虑直接把操作树建出来,即每次操作 W/Z x 就往 \(x\) 连一条 W 边或 Z 边,然后在这棵树上计算每个点被加入时,对其他点度数的贡献。(下面注意区分原图操作树)(以下我们规定,画在左边的儿子比画在右边的儿子加)

首先,如果只有两个点,这两个点以 W 边相连,那么互相产生 \(1\) 的贡献。

在此基础上,如果一直往上连 Z 边,那么原图构成一个完全二分图(即每对左部点和右部点都有连边),如图(W 边用实线表示,Z 边用虚线表示)(图 1):

分成了两个连通块,每个点都对对面连通块的每个点产生 \(1\) 的贡献。以上讨论在 Subtask 2 中有充足的提示。

如果继续往下接,就会发现(图 2):

如图,\(4,3\) 之间有贡献,\(2\cup 3,1\) 直接有贡献,但 \(4,1\) 之间没贡献。这里同样也要保证 \(4\)\(3\) 之间的 W 边要比 \(4,3\) 中任意一条边先加。

我们总结一下产生贡献的形式,如下(图 3):

必须保证两条边加入的时间 \(t1<t2\)

这个结论证明不难,对路径长度归纳即可。

接下来考虑加入一个点时,怎么快速维护这些贡献。(图 4)

如上图,如果加入的是一条 W 边,那么只会对 红点 和 黑点 分别产生 \(1\) 的贡献,不会对蓝色区域的 Z 边连通块产生贡献,因为红边比这些边要加。

如果加入的是 Z 边,那么有两种情况。

Part. 1

第一种情况如下图(图 5):

黑边是 new 点一直往上走遇到的第一条 W 边,于是该点会和蓝色区域的 Z 边连通块互相产生贡献(蓝色虚线比黑色实线加),但不会和橙色区域产生贡献(橙色虚线比黑色实线加)。

为了维护这一贡献,我们对操作树进行重构,(图 6)

显然重构完还是一棵树,只不过把每个点按照加入 Z 边的时间,进行了拆点。

现在画出重构后的图 5:(图 6)

不难用树状数组维护。

Part. 2

第二种情况,(图 7)(左边是操作树,右边是重构树)

但接在绿色区域可能有很多连通块,不方便直接子树加,于是我们转换为绿色区域的链加-单点查,进而转换为单点加-子树查。同样不难用树状数组维护。

Code

为了方便处理,可以先遍历操作把重构树建出来,第二次遍历操作再进行贡献维护,也就是我们可以把已加入点未加入点的贡献提前计算。

注意如果这样写的话,加入 W 边时也要对两个端点进行类似 Part. 1 和 Part. 2 的操作。

Code

http://www.jsqmd.com/news/329549/

相关文章:

  • 37.C++进阶:特殊类设计|不能拷贝|不能继承|只在堆上创建对象|只在栈上创建对象|只能创建一个对象
  • 攻防世界-MulTzor
  • 【小程序毕设全套源码+文档】基于微信小程序的爱抚宠物小程序设计与实现(丰富项目+远程调试+讲解+定制)
  • APISIX > ai-proxy 插件 - 指南
  • 亲测好用9个降AIGC平台 千笔·降AIGC助手帮你降AI率
  • 计算机毕设Java农村住宅房屋信息管理应用系统 基于Java的农村住宅信息管理系统设计与实现 Java技术驱动的农村房屋信息管理平台开发
  • 【小程序毕设源码分享】基于springboot+小程序的爱抚宠物小程序的设计与实现(程序+文档+代码讲解+一条龙定制)
  • 金融信创环境下,百度富文本编辑器支持哪些WORD图片粘贴的优化方案?
  • 2026最新!10个AI论文网站测评:专科生毕业论文+开题报告高效写作指南
  • 智能体的设计模式探讨
  • 【小程序毕设源码分享】基于springboot+Android家庭医务助手APP的设计与实现(程序+文档+代码讲解+一条龙定制)
  • SpringMVC中如何处理百M级别大附件的上传下载?
  • 打造国产化内网新基座:PageAdmin 助力构建新一代智慧警务网站集群
  • 农业信息化平台用百度UM编辑器导入WORD文档,如何解决图片粘贴后的排版问题?
  • 从模型到ECU:手搓BMS控制器的野路子
  • 310. Java Stream API -大小特性和子大小特性流
  • 【一句日历】2026年02月
  • 医疗系统用百度UMEDITOR导入WORD文档,如何处理粘贴的图片清晰度问题?
  • 教育网站如何通过百度UMEDITOR实现PPT课件中WORD图片的网页化展示?
  • 风、光、负荷出力各场景及概率、场景削减、负荷点的拉丁超立方抽样(Matlab代码实现)
  • 为什么有些人边框不用border属性
  • 计算机毕设Java快递仓库管理系统 基于Java的快递仓储信息化管理系统设计与实现 Java技术驱动的快递仓库智能管理平台开发
  • 苹果斥资20亿美元收购AI初创公司:准备把“耳语”变成换机杀手锏?
  • 深度测评10个降AI率工具 千笔·专业降AI率智能体高效降AIGC
  • 计算机毕设Java教研室管理系统设计与实现 基于Java技术的教研室信息管理系统开发与应用 Java环境下教研室综合管理平台的设计与实现
  • 基于peakcan/PCAN UDS上位机 (14229/15765) 可以开发UDS小工具
  • 开题卡住了?8个AI论文写作软件深度测评,本科生毕业论文必备工具推荐
  • 水库变形监测的单北斗GNSS系统应用解析
  • 亲测好用9个降AIGC网站推荐,千笔AI助你轻松降AI率
  • spaCy:Python与Cython中的高效文本处理库