很抱歉带给了大家不好的体验。C是很典的原,D假了。这场应该会 unrated。

A:输出 即可。

B:将 减去 ,对于非正整数 将其对应的 直接贡献到答案内,非正整数 的绝对值之和记为 。对于剩下的对,问题即转化为 01 背包问题。时间复杂度

C:这道题与树上独立集计数等价。设 表示点 是否与树外点有连边时的子树连边方案数。转移如下

即可。

D:题目假了,想的是并查集+trie。但是实际上我们考虑题目的表述为存在性表述。我们将任意两个相似的歌曲连一条边,可以发现题目要求的实际上是 的较小值。

E:

实际上需要将题目的 限制进行一定的转化。

我们对每个位置 分别考虑其 值是否满足题目要求。

  1. 时,明显两个条件都满足。

  2. 假设有两个位置 ,当 时,可以满足第二个条件。假设 ,则需要满足

因此我们可以设一个序列 表示第 个点是否被确定,被确定则设为 ,否则设为 。我们只有当 找到了与其匹配的 后才将 标记为 。由上面的分析可得,我们只需要考虑 其中的连续三个点的转移。

但我们又注意到:

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:

因此题目所求即可转化为

经过莫比乌斯反演,即有

再次化简,可以得到

对两个中括号内分别化简,可以得到

因此原式可化为

不妨假定 ,又特殊考虑 的情况,则有

我们求解

可以得到

,则式子可简写为

注意到仅当 ,因此有答案为

总时间复杂度为