比赛链接
T1
题意关键词:断边连边,求某连通块的a的2^k之和。
做法关键词:线段树分治,并查集,费马小定理,循环节,扩展欧拉定理
打表可知998244353对于任意的a循环节都在50以内。于是我们预处理这些次幂的结果然后线段树分治再并查集即可。就是个结论题。
时间复杂度\(O(50n\log^2 n)\)。
T2
题意关键词:给定数n,求一个最大的b使得存在a满足a^b|n,输出a,有多个输出最大的
做法关键词:分讨,b>=3直接枚举,b=1答案为n,b=2也枚举。
b=1答案就是n,b>=3的时候则直接枚举三次方根内的所有数。b=2的情况也先枚举三次方根内的数,能拆出平方来就ok,不能在看你拆完三次方根内的数之后开根号是不是整数。
时间复杂度\(O(n^{\frac{1}{3}})\)。
T3
题意关键词:左闭右开线段树,求有询问区间方案使得会被统计答案的区间个数恰好为k
做法关键词:记忆化搜索,线段树同层至多两种不同构子树。
结论是线段树同层至多两种不同构子树。考虑归纳,假设某层为a,a+1,分讨其奇偶性之后,下一层无论如何都能表示为b和b+1.
于是k=1就会了。然后考虑\(k\le 2\log n\),所以可以把k放进状态里,直接dp即可。
注意记忆化还有一个log,但是记忆化的log和k的log可以并行,就是只记忆化n然后开一个vector[k]。时间复杂度\(O(Tn\log^2 n)\)。