T1 同色三角形
考察容斥定理和计算贡献的思想
本题在计算同色三角形数量,难以计算,可以用总数减去异色三角形的数量——任选三个点的方案数为 ,减去异色三角形,就是同色三角形数量。
对于某一个点而言,假设有 条红色边,
条绿色边,那么它对异色三角形数量的贡献——任选一红边 P 一绿边 Q,都可以确定一个三角形(因为这是完全图,所以 P Q 之间也一定有一条边,又因为 P Q 这两条边是异色的,说明这个三角形肯定是异色的)
计算贡献:那么也就是说这个顶点就会参与 个异色三角形的组成。
统计所有点的贡献 ,请注意:一个异色三角形上有两个点会被统计贡献,所以
才是异色三角形的数量。题目保证这样的图一定存在,所以无需担心
不是整数。
综上:同色三角形的数量就是 。
T2 任务
我们考虑如何求出包含 这个子序列的长为
的字符串
有多少个。令
表示目前枚举到了
的第
位,匹配到了
的第
位的方案数。那么
(要么第 位匹配上了,那么
的取值就只有一种,要么第
位没有匹配上,那么取值就有 25 个)
所以我们发现答案只与 有关,与
内容无关。如果处理好这些
的话,将可以获得 50~70 的暴力分。
100pt
通过大眼观察法,我们发现
因为 ,所以
至多有
种。那么我们就可以维护一个单点修改,区间查询乘积的线段树了。
T3 加法方案
发现若 可以为空,则
可以和
构成双射,则最终答案即为
。
考虑求 ,可以考虑每一位的贡献,则有从高到低第
位的贡献为
考虑这个 式子的组合意义,记
,即为给出标号分别为
的
个小球,选出
个小球放入
个盒子中。
考虑钦定剩下的 个小球放入第
个盒子,则该式即为将
个小球放入
个盒子中的方案数,即
。
预处理出 和
的幂次即可做到
。
感谢拔钉党贡献的题解。
T4 打标签
首先考虑 时怎么做。设存在感序列为
,友好度序列为
。
手动模拟一下,可以发现当 时才可能有多解或无解,其余情况均有唯一解。
当 时,有
这样我们就可以求出所有 的
了。
然后反着来一遍,就容易求出所有地方的值。
更具体一点,先按照顺序求出红色位置的值,然后按照顺序求出蓝色位置的值,最后求出绿色位置的值。
当 时,也可以用类似的方法解决。
当 时,蓝色位置与红色位置恰好重合,所以不能使用上述方法。
手动模拟样例,可以得到结论,当 时,无解,或
为任何值都有解。
以 举例,若存在一组解为
,则存在解
+
+
。
我们只需要让所有余数为 的位置加上
,余数为
的位置减去
,就可以构造出一组新的解。
所以我们可以强制规定 ,然后对序列的后
个位置做
的情况即可。
这样 就做完了,那么
更大的时候怎么做呢?
首先考虑一个别的问题,题目中给出了 ,让我们求出
,这样并不好做。
但是我们如果知道了 ,能否快速求出
?
时,很好做,因为一定有
。
对于 的情况,从
到
枚举每一个维度,然后合并当前维度下的相邻点。
这样我们就能在知道 的情况下求出
。我们发现这个做法本质上是做了
遍
的问题。
回到原问题。
枚举 到
的每一个维度,并对每个维度,都做一遍
的情况。
然后我们就从 数组得到了
数组。
时间复杂度 +
。