Loading

模拟赛重做...

NOIP2023训练赛1

A

类似过河卒,搜索即可。

B

首先考虑暴力怎么做:设 \(dp_i\) 表示哈希值为 \(i\) 的串答案最大是多少,对每个串枚举子串转移即可。

发现不同长度不超过 \(O(\sqrt n)\),所以只有 \(O(\sqrt n)\) 种长度的子串有用,转移即可。

容易做到 \(O(n \sqrt n)\)

但这不够优,考虑建立 AC 自动机,前面的串对后面的串的影响形如 fail 树子树取 \(\max\),使用线段树维护即可。对于查询,应当取串的每个前缀对应加点权值的 \(\max\)

时间复杂度 \(O(n \log n)\)

C

首先有个简单的容斥 dp,可以做到 \(O(n^4)\)

注意到排列随机。仔细分析复杂度可以发现有一个 \(O(\sum\limits_{i}\frac{n}{2^i})=O(n)\) 的东西,所以总复杂度 \(O(n^3)\)

D

待补。

NOIP2023训练赛2

A

倒着做就做完了。

B

posted @ 2024-02-16 19:21  Hypercube07  阅读(23)  评论(0)    收藏  举报