T1 同色三角形

考察容斥定理和计算贡献的思想

本题在计算同色三角形数量,难以计算,可以用总数减去异色三角形的数量——任选三个点的方案数为 ,减去异色三角形,就是同色三角形数量。

对于某一个点而言,假设有 条红色边, 条绿色边,那么它对异色三角形数量的贡献——任选一红边 P 一绿边 Q,都可以确定一个三角形(因为这是完全图,所以 P Q 之间也一定有一条边,又因为 P Q 这两条边是异色的,说明这个三角形肯定是异色的)

计算贡献:那么也就是说这个顶点就会参与 个异色三角形的组成。

统计所有点的贡献 ,请注意:一个异色三角形上有两个点会被统计贡献,所以 才是异色三角形的数量。题目保证这样的图一定存在,所以无需担心 不是整数。

综上:同色三角形的数量就是

T2 任务

我们考虑如何求出包含 这个子序列的长为 的字符串 有多少个。令 表示目前枚举到了 的第 位,匹配到了 的第 位的方案数。那么

(要么第 位匹配上了,那么 的取值就只有一种,要么第 位没有匹配上,那么取值就有 25 个)

所以我们发现答案只与 有关,与 内容无关。如果处理好这些 的话,将可以获得 50~70 的暴力分。

100pt

通过大眼观察法,我们发现 alt

因为 ,所以 至多有 种。那么我们就可以维护一个单点修改,区间查询乘积的线段树了。

T3 加法方案

发现若 可以为空,则 可以和 构成双射,则最终答案即为

考虑求 ,可以考虑每一位的贡献,则有从高到低第 位的贡献为

考虑这个 式子的组合意义,记 ,即为给出标号分别为 个小球,选出 个小球放入 个盒子中。

考虑钦定剩下的 个小球放入第 个盒子,则该式即为将 个小球放入 个盒子中的方案数,即

预处理出 的幂次即可做到

感谢拔钉党贡献的题解。 alt

T4 打标签

首先考虑 时怎么做。设存在感序列为 ,友好度序列为

手动模拟一下,可以发现当 时才可能有多解或无解,其余情况均有唯一解。

时,有

这样我们就可以求出所有 了。

然后反着来一遍,就容易求出所有地方的值。

更具体一点,先按照顺序求出红色位置的值,然后按照顺序求出蓝色位置的值,最后求出绿色位置的值。 alt

时,也可以用类似的方法解决。

alt

时,蓝色位置与红色位置恰好重合,所以不能使用上述方法。

手动模拟样例,可以得到结论,当 时,无解,或 为任何值都有解。

举例,若存在一组解为 ,则存在解 ++

我们只需要让所有余数为 的位置加上 ,余数为 的位置减去 ,就可以构造出一组新的解。

所以我们可以强制规定 ,然后对序列的后 个位置做 的情况即可。

这样 就做完了,那么 更大的时候怎么做呢?

首先考虑一个别的问题,题目中给出了 ,让我们求出 ,这样并不好做。

但是我们如果知道了 ,能否快速求出

时,很好做,因为一定有

对于 的情况,从 枚举每一个维度,然后合并当前维度下的相邻点。

这样我们就能在知道 的情况下求出 。我们发现这个做法本质上是做了 的问题。

回到原问题。

枚举 的每一个维度,并对每个维度,都做一遍 的情况。

然后我们就从 数组得到了 数组。

时间复杂度 +