ZLOJ练习51 B & COCI2012/2013 Contest#4 E
written on 2022-07-27
比赛时也想了很多,但是没写出来,让赛后的我感到有些意外。
暴力的 \(30pts\) 就不说了。
观察到 \(k\) 的范围很大,因此很容易想到倍增优化,或者说是类似矩阵快速幂的东西。比赛时莫名想起那道 \(Gremlin\) 的繁殖也不是没有道理,两题的相像之处还是蛮多的。考试时没有做出来,所以这里再总结一下类似的题目如何分析。
如果 \(k\) 的数据范围极大,超过了 \(\tt{int}\) 的限制,那就可以考虑倍增或是矩阵快速幂进行优化。接下来的分析要牢牢抓住 \(2^n=2^{n-1}\times 2^{n-1}\) 这个信息,然后考虑广义的乘法形式。对于此题,我们可以开一个 \(\tt{set}\),然后模拟题意,容易发现,对于 \(2^n\),就是 \(2^{n-1}\) 的 \(\tt{set}\) 信息内部相乘得到的结果,因此可以写出这个广义的乘法了,然后上矩阵快速幂解决此题,总时间复杂度 \(O(n^2\log n\log k)\)。实测能卡过。