请检查你是否在 check 的中途将一些完全不可能合法情况提前判断掉,否则你存的数很容易溢出(至少这种写法会寄)
一个很简单的例子:
对于一个 iii,它可以由 111 到 i−1i - 1i−1 的金属融合而成
然后你发现在上面那种写法中,如果 midmidmid 比较大, cic_ici 会增长得很快(感觉是指数级增长?),但是你最多也只有 ∑ai\sum a_i∑ai 个金属
所以你粗略判断一下,在当前需求的金属数量超过 ∑ai\sum a_i∑ai 的时候就是完全不可能合法的情况,需要提前判断防止后面溢出