8.20 总结

T1

死因:没判 \(n1=n2\)

发现数据范围非常小,\(n\le8\),于是考虑直接全排列一一对应来统计。

具体地,每枚举一个全排列就用邻接矩阵判断是否连边即可。

注意会有重复,于是可以把边集状压判重。

复杂度 \(\mathcal O(n!n^2)\)

T2

这种题必须在 10 min 内写完,尽量在 5 min 内写完。

按照深度做一遍前缀和,查询 \(\text{lca}\) 就好了。

鉴于需要快速求 \(\text{lca}\),这题可以给到黄,否则我觉得就是个橙题。

T3

首先 floyd 求出多源最短路,然后按照时间顺序 dp,这是非常好想的。复杂度 \(\mathcal O(k^2)\)

考虑优化这个 dp。转移的条件为时间差不小于最短路,但是时间差可以很大,最短路最大为 \(n-1\),而 \(n\le200\)。那么只需要枚举时间差小于 \(n-1\) 的点转移,剩下的直接做一个前缀 \(\max\) 就好。

T4

发现是一个类似关路灯的问题,每次走过一段路径一定会收复路径上所有城池。

那么考虑做一个区间 dp,非常经典,复杂度 \(\mathcal O(n^2t)\)

发现瓶颈在与 \(t\)。考虑优化它。

发现 \(t\) 的作用在于判断当前城池的贡献。

我们猜测复杂度为 \(\mathcal O(n^3)\),考虑什么东西也可以算贡献。

发现每过 \(1\) 单位时间,剩下的所有没有被收复的城池都会减 \(1\) 的贡献。那么考虑维护没有被收复的城池的个数。

但是当 \(t>a_i\) 时,答案会被减为负数。转移时考虑每座城池有没有被减为负数来确定选/不选。发现没有减为负数时不选一定不优,减为负数后选了一定不优,那么就无需考虑更多。

于是复杂度降到了 \(\mathcal O(n^3)\)

posted @ 2025-08-21 18:36  Luckies  阅读(4)  评论(0)    收藏  举报