(室友不会,我发现我也不会。
算法描述&解决
选择最小的aia_i作为base,把其他的a表示成basep+leftbase∗p+left的形式。定义f[i]f[i]代表凑出模base余i的数最小需要多少base。而一个数p能被凑出当且仅当f[p%base]<=p/basef[p\% base]<=p/base,ff数组最短路转移即可得到。
一般用来解决的问题:
给定m个整数,求这m个整数能拼凑出多少其他整数.
或给定m个整数,求这m个整数不能拼凑出的最小(或最大)的整数.
i=1naixi=k\sum\limits_{i=1}^na_ix_i=k