若 m≡0(modk),无解。
考虑将操作二个数限制为 <k,否则可转化为几次操作一和 ≤k 次操作二,那么一个操作集合唯一对应一种最终序列,于是对操作集合进行计数即可。
记序列 b1∼n−k+1 为每个点作为二操作开头加了几次,记 bn−k+2∼2n−k+1 中 bi 为点 i−(n−k+1) 用了几次操作一那么计数 b 序列即可。
需要满足以下条件:
- ∀i∈[1,n−k+1],bi<k
- i=1∑2n−k+1bi=km
带限制,考虑容斥,钦定前 n−k+1 个元素中至少有 i 个不合法,则计数和为 km−ik 的 b 序列即可,由插板法得:
ans=i=0∑n−k+1(−1)i(n−k+1i)(km−ik+2n−k2n−k)
时间复杂度 O(n2logmod)。