这场我是先用小号打的div3,然后凑了七题才交的div1,所以下面部分时间实际上div3AC的时间
Chef and Ants(1.2)
Expected Number of SCCs(1.3)
Guess the Tiling(1.8)
Blackjack(1.2)
And-Or Game(1.3)
Cool Subsets(1.4)
Sequence Creation(1.9)
Curious Matrix(1.6)
Stack-Queue Sort
Greedy Students
达成新成就:
第一次在Challenge题上拿到了分(虽然只有可怜的4分)
挑几题讲讲
Sequence Creation
结论:对于两个长度为(m)的序列({A},{B}),其构成合法序列的充要条件是:(A_i)与(B_i)之间连边,不存在某个连通块有两个及以上的环
至于计数,很简单,可以自己思考一下
对于(M_i),可以发现随着(i)的减小,右端点是不增的,故这部分移动是(O(1))的
然后可以用lct维护基环树
Curious Matrix
结论:对于一个(n imes n)的矩阵满足题目要求,充要条件是:所有(2 imes 2)的子矩阵行列式为(p)的倍数
证明显然
令(a_{1,1}=key),(x_i=a_{1,i}(i
eq 1)),(y_i=a_{i,1}(i
eq 1))
很容易发现(a_{i,j}=x_jcdot y_icdot key^{-1}(ige 2,jge 2))
很容易想到并查集维护
先考虑(O(n^2logn))的方法((logn)是并查集的因子),容易用线段树实现(O(nlog^2n))
这里的并查集与之前我写过的均不同,思考了将近一天,最后在与emofunc神仙交流的时候突然迸发出的灵感
我们不需要维护所有点的值,如果要维护的话,需要维护(x_i)与(x_icdot key^{-1}),甚至(x_icdot key),非常不好写,我写了将近8k,然后交上去全WA
对于一个连通块,若某个(x_i)是已知的,则其他(x_j)都可以通过其判断是否合法
对于一个连通块,若某个(x_i,y_j)是已知的,则(key)可以解出来
计数比较简单,自己思考一下吧