模拟赛重做...
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

浙公网安备 33010602011771号