打了这么久,好像第一次rank1啊
t1
我打的50分dp
不过好像加常数优化后可以拿60-70分(我拿了60)
t2
f[i]表示gcd(边权)是i的倍数的方案数
如果把f[i]搞出来了,那么就可以nlogn求出答案。
f[i]其实就是矩阵树n^3求啊
不过加一个,如果不连通就直接退出
我也不会算复杂度
t3
一开始想打fwt拿50分,不知道为什么拿了40
后来想到,就枚举i,j和n,m的二进制的最长公共前缀
之后就可以搞了
t4
就是max-min=r-l
且不存在重复的数
把每对相邻重复的数l,r
以r为下标放到线段树里
就可以了
t5
分治
对两边所有不同的gcd,or暴力枚举
似乎是nlog^3的
但跑的挺快。。
t6
一开始把那个o(N)的方法看了一遍
后来发现构建笛卡尔树空间会开不下
分块 块间st+前后缀min是可以o(1)的
但询问在块内怎么办呢
答案就是块内直接暴力(因为随机,假设块大小为k,那么复杂度就是k/n n k=k * k)
upd:
t5复杂度是nlog的
t4 fwt中间没有取模 爆了long long 加了后拿到50分