T1 【NOIP2014模拟】逻辑的连通性
就是一个强连通分量,对于大小为 \(n\) 的强连通分量,它的充要条件数量为 \(C^2_n=\frac{n(n-1)}{2}\) 。
用 Tarjan 过了。
T2 【NOIP2014模拟】树的连通性
我暴力过的,正解不是我。
我们使用前向星连边,认较小的为爹。跑 dfs 标记深度,然后对于删边操作,就直接把儿子的父亲标为自己(不用更新深度,因为查询时发现找到子树的根节点了,就是两个点不连通),对于查询联通操作,直接判断哪个边深度小,深度小的边向上爬(如果深度一样随便一个爬),直到两个点重合为止。如果找到根节点(包括子树的根节点),就结束,不连通。
对于修改权值操作,直接改。
T3 【NOIP2014模拟】图的连通性
被坑了QWQ。
比赛时想到了正解,但是以为要在线。其实是强制离线。因为当前操作之前图中剩余的边数,可以很容易算出来。我们用并查集,既然并查集删边难,那我们就让时光倒流,先处理出最后局面,对于删边操作,就连边,对于查询操作,就并查集查询。
然后介绍一个正反方向前向星的方法,就是让cnt从1开始,i^1就是反向边。
T4 【NOIP2019模拟11.07】极好的问题
极好的三元组有以下三种情况:
- \(a,a,a\)
- \(a,a,b\)
- \(a,b,c\)
对于第一种情况,可以统计每个出现次数大于等于 3 的数的三次方 (在 模P 意义下) 是否等于 1 。
对于第二种情况,统计每个出现次数大于等于 2 的数的二次方乘去重序列中的其它数 (在 模P 意义下) 是否等于 1
对于第三种情况,预处理出所有两个不同的数的乘积,并在预处理中特判 \(a\times b=a'\) 或 \(a\times b=b'\) 的情况。因为此时等价于情况二,不特判会导致重复计算。然后求出每个数的乘法逆元在这些乘积中出现的次数。这些次数之和会反复出现三次,所以记得除以3。