杂项
远古答辩
我也看不懂。
这里抽出来两个 OI 中常见的模型,来分析一下这些东西能做到多好。
1
,给出一个参数 和集合 ,查询其答案。
性质 1:对于一个集合 ,我们可以在 的复杂度内进行预处理,而后 回答 。
性质 2:,其中 是一种可以 完成的运算。
问题 1:
初始有一个空集 ,支持两种操作:插入一个元素 到 中,查询 。允许离线。
这个就是经典的 CDQ 分治了。
在时间轴上分治,每次将 之前插入的元素放在一起预处理,然后把答案加在 之后的询问上。
复杂度 。
问题 2:
初始有一个空集 ,支持两种操作:插入一个元素 到 中,查询 。强制在线。
还是 CDQ 分治。
考虑我们的分治是对时间轴进行的,所以本身就是从左到右的过程。
将递归过程刻画成树,其实就是对树进行 DFS。
我们动态维护这个过程即可。
当然,还有一种等价的理解方式为二进制分组。
考虑每次加入一个元素就新开一个集合,每当出现两个相同大小的集合的时候就合并成一个并预处理。
不难发现总复杂度 。
问题 3:
初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。允许离线。
使用线段树分治。
对于每个元素,其生存周期为 ,直接挂到线段树上。
对于线段树上的每个节点,进行预处理。
总复杂度 。
问题 4:
初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。强制在线。
这里就不好用分治做了。
使用分块,每 个划分到同一个集合里面,删除就重构。
总复杂度 。
至于为什么这个问题无法做到 ,有一个感性理解的方法。
考虑现在 中有 个元素。
我们首先进行查询。设这次查询访问了 个集合,首先应当满足这 个集合的并为 。
则这 个集合大小的和不小于 ,因此最大的集合的大小不小于 。
接下来删除这个最大集合中的一个元素。会导致这个集合作废。
因此,两次操作产生的总复杂度为 。
所以复杂度只能做到 。
在有其他特殊性质的时候也许会做到更优。例如 可逆,或是存在其他答案计算方式(而不是只能 预处理 查询)
以及,这里是最坏情况。如果可以依赖随机性不知道能不能做......
但是 可重复贡献并不算特殊性质。上述证明过程涵盖了 可重复贡献的情况。
对于问题 1, 2, 3, 已经是复杂度下限了。因为归约单点加区间求和。
2
,给出集合 和参数 ,询问其答案。
性质 1:允许严格 向 中插入元素。
性质 2:计算 复杂度 。
这个,感性理解的话,动态图连通性?
(可以加边,不能删边,两个并查集不能合并)
问题 1:初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。允许离线。
线段树分治。没啥好说的了。
允许严格 插入其实也就意味着操作可撤销。
问题 2:初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。强制在线。
这个还没什么好的做法。只能给到 。
感性理解一下的话就是,先查询一次,则必须要维护一个集合 包含全部的元素。
考虑 中第一个加进去的元素,我们将其删除,并保证后面不再加入。
这个时候如果暴力撤销是 的,直接把集合 扔掉仍然会导致 的势能作废。
所以也就是 了。
added:为什么在线可以这么分析离线不可以。
因为强制在线的话可以根据现有的结构决定操作。
但是离线的话是根据操作决定结构。
问题 3:初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。强制在线。
保证一个性质:先加入的元素先被删除。
这个就是我们 baka's trick 了。
写过,丢链接跑路。
复杂度 。
3
这部分还没搞明白。有点困难的。
,给出集合 和参数 ,询问其答案。
性质 1:允许向 中插入元素,并产生 的势能。
性质 2:计算 复杂度 。
其中,势能可能会在插入/计算时部分释放, 的势能会贡献 的复杂度。
直接点名路径压缩并查集就行了......吗?
带按秩合并的并查集单次永远不会超过 ,毕竟高度有限。
但是这个模型里面可能会攒 的势能然后一次释放。
问题 1:初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。强制在线。
保证一个性质:先加入的元素先被删除。
这里有可能是 的。
考虑队列图连通性的线段树算法。这里每个点至多被增删 次。
(考虑每个点的祖先节点被加入/删除时自己才会被影响)
因此,无论势能在哪个位置被释放,至多只会被重复 次。
所以总复杂度不超过 ,不知道能不能分析到更优。
问题 2:初始有一个空集 ,支持两种操作:插入一个元素 到 中,删除 中的一个元素,查询 。允许离线。
不会。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 一文读懂知识蒸馏
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下