题解 CF1117D Magic Gems
March 2, 2019
有趣的矩阵乘法
(为方便,下文中“大号宝石”代指连续的m个分裂出来的宝石,“小号宝石”代指未分裂的单个宝石)
首先,我们观察这题,考虑DP,设状态fi表示已经取了i个单元的方案数的不难推出一个朴素的O(n2)DP方程fi=i−j≥m∑fj+1(可以理解成上一个大号宝石放的位置,最后一个1即为全部用小号宝石填满的方案)
我们再仔细看看这个式子,加个前缀和,不难优化到O(n),然而数据范围n≤1018,这让我们考虑O(logn)级别的算法,我们接下来考虑矩阵乘法优化这个式子。