很抱歉带给了大家不好的体验。C是很典的原,D假了。这场应该会 unrated。
A:输出 即可。
B:将 减去 ,对于非正整数 将其对应的 直接贡献到答案内,非正整数 的绝对值之和记为 。对于剩下的对,问题即转化为 01 背包问题。时间复杂度 。
C:这道题与树上独立集计数等价。设 表示点 是否与树外点有连边时的子树连边方案数。转移如下
即可。
D:题目假了,想的是并查集+trie。但是实际上我们考虑题目的表述为存在性表述。我们将任意两个相似的歌曲连一条边,可以发现题目要求的实际上是 与 的较小值。
E:
实际上需要将题目的 限制进行一定的转化。
我们对每个位置 分别考虑其 值是否满足题目要求。
-
当 时,明显两个条件都满足。
-
假设有两个位置 ,当 时,可以满足第二个条件。假设 ,则需要满足 或 。
因此我们可以设一个序列 表示第 个点是否被确定,被确定则设为 ,否则设为 。我们只有当 找到了与其匹配的 后才将 标记为 。由上面的分析可得,我们只需要考虑 其中的连续三个点的转移。
但我们又注意到:
000
是明显不合法的,因为第一个 0 不可能再找到与其匹配的位置。
同样的,第一位数为0的都不合法。
所以实际上我们只需要考虑连续两个点的转移,确定当前数是否与前面的数进行匹配,还是留空,如下:
00 -> 101 -> 01
01 -> 111 -> 11
10 -> 100 -> 00
10 -> 101 -> 01
10 -> 111 -> 11
11 -> 110 -> 10
11 -> 111 -> 11
因此我们答案可用矩阵快速幂计算得到。
对于不同的 都有不同的矩阵。时间复杂度为 。
考虑预处理出每个矩阵的 2 的幂次的位置,即 。这个 trick 可见 NOI2020d1A。
时间复杂度优化为 。
F:
令
则
因此题目所求即可转化为
经过莫比乌斯反演,即有
再次化简,可以得到
对两个中括号内分别化简,可以得到
因此原式可化为
不妨假定 ,又特殊考虑 的情况,则有
我们求解
可以得到
记 ,则式子可简写为
注意到仅当 时 ,因此有答案为
总时间复杂度为 。