T1 :
没有想到优于线性的做法,于是写了线性预处理,根号查询的解法。
T2 :
发现可以划分成a个奇链和b个偶链。设f[a][b]。
可以发现如果存在偶链,就将他自己成环,或者与奇链拼成一条更长的奇链。
否则的话就将奇链拼成一条偶链。
if(b) return (a+b)*dfs(a,b-1)%P;
if(a) return (a-1)*dfs(a-2,1)%P;
T3
很容易写出一个 (n^3) 的暴力。认为答案的上界是 (frac{n+m}{k}) ,即可奇妙的通过(
T1 :
没有想到优于线性的做法,于是写了线性预处理,根号查询的解法。
T2 :
发现可以划分成a个奇链和b个偶链。设f[a][b]。
可以发现如果存在偶链,就将他自己成环,或者与奇链拼成一条更长的奇链。
否则的话就将奇链拼成一条偶链。
if(b) return (a+b)*dfs(a,b-1)%P;
if(a) return (a-1)*dfs(a-2,1)%P;
T3
很容易写出一个 (n^3) 的暴力。认为答案的上界是 (frac{n+m}{k}) ,即可奇妙的通过(