【题解】CF1558B Up the Strip 动态规划、O(n log n) 枚举倍数
[题目链接](CF1558B Up the Strip)
令 \(f[i]\) 为到点 \(i\) 的方案数。
考虑到点 \(i\) 的最后一步,换言之考虑哪些位置可以到点 \(i\) 。
通过往前跳 \(x\) 步的决策为 \(\sum_{k> i} f[k]\) 。
考虑哪些位置 \(x\) ,满足存在一个整数 \(k\) 使得 \(\lfloor \dfrac{x}{k} \rfloor = i\) 。
考虑对每个 \(i\) 枚举倍数 \(k\) ,我们发现对于区间 \(\forall x \in[i\times k,i\times k + k - 1]\) ,满足 \(\lfloor \dfrac{x}{k} \rfloor = i\) ,并且对于不在该区间的任意一个整数都不满足(对应着 \(\mod k \in [0,k-1]\) 的 \(k\) 个连续位置)。
因此总的复杂度为 \(O(\sum_i{\dfrac{n}{i}})=O(n\dfrac{1}{i})=O(n\log n)\) 。

浙公网安备 33010602011771号