PKUSC2024 题解
D1T1. 回文路径
给定
网格,每个格子上有一个字符,考虑一条只能向下和向右走的路径,如果路径上每个字符连成的字符串是回文串,称这条路径是好的,求最长好路径。 数据范围:
枚举回文中心,不妨设其在第一行,那么二分出在只在第一行能走到的最长距离,然后在右端点向下走一步,再二分在第二行能移动到最长距离。
可以用哈希快速判断路径是否回文。
时间复杂度
D1T2. 正方形计数
给定凸
边形 ,求有多少正方形(可以是斜正方形)在该多边形内。 数据范围:
。
考虑枚举正方形的一条边向量
相当于数某个多边形内部整点数,可以拆成对
时间复杂度
暴力能过,没写正解。
D1T3. 独立
给定
个点的树,每个点点权在 中随机,求所有方案下树上最大权独立集的和。 数据范围:
。
考虑求最大权独立集的 dp 算法:
其中
并且整棵树的最大权独立集就等于
设
答案就是
可以写出如下 48 分暴力:Submission Link。
注意到我们要对
可以用归纳法证明,对于每个
不妨设
考虑如何转移,首先我们发现
然后我们要考虑
最后我们要求
时间复杂度
D2T1. 分流器
在一张
个点的图上, 出度都为 ,在这个图上做一个类似 Shannon 投球游戏的过程,求最小周期。 数据范围:
。
考虑维护
可以据此计算出
一个较好的实现是令
时间复杂度
D2T2. 排队
给定
个区间 ,定义 , 次询问 ,求 。 数据范围:
。
考虑扫描线,枚举
考虑
,若某个时刻 ,此后所有时刻都有 ,由于初始 时 ,因此 不可能反超 。
线段树维护所有
时间复杂度
D2T3. 最短路径
给定纯随机的
个点 条边的带权有向图, 次随机询问某对点 的最短路。 数据范围:
。
很显然只能用一些魔改的最短路算法解决。
单向 Dijkstra 显然不太靠谱,不妨考虑双向 Dijkstra,即从起点和终点分别开始,在原图和反图上增广最短路。
设
两棵最短路树考虑第一次相遇的时刻,设相遇在
那么考虑答案的形态,首先全部经过最短路树的路径
对于一个不全在最短路树的路径,如果这条路径经过一个最短路树外的节点
因此不在最短路树内的部分只可能是一条边。
然后我们分析一下最短路树的期望大小,注意到 Dijkstra 的过程中每次弹出堆顶相当于取出当前权值最小的一条边,而这条边的权值和这条边的终点没有关系,因此每次 Dijkstra 拓展到的点可以被认为是
所以我们每次拓展较小的一棵增广路树,根据生日悖论,期望
但是这个复杂度并不对,因为每个点度数可能很大,增广到这个点的时候就会向堆中加入大量边。
因此我们考虑
即堆中存储每一条边,增广的时候只将新节点的第一条出边入队,并且把当前边同一起点的后继边也入队。
那么这样每次增广只会加入
然后考虑如何算答案,即怎样枚举所有可能的增广路树外的一条边。
对于某条边
因此
不妨设
对每个点出边排序后即可做到只处理合法边。
考虑分析其边数,如果
同理,我们可以猜测
时间复杂度
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
· 为什么 退出登录 或 修改密码 无法使 token 失效