有4种硬币。面值分别为c1, c2, c3, c4。 Q组询问,每次给出4种硬币的使用个数上限limit_i,以及一个数S,求组合出S的总面值的满足限制条件的方案数。 di,S<=100000, Q<=1000
注意到硬币个数对于所有询问是固定的,且个数很少,所以我们肯定需要预处理一些东西。 先不考虑硬币个数的限制,刷一次普通的背包得到f[i],表示用4种硬币组合出i的总面值的方案数。 显然对于每次询问,ans=f[S]-{不合法的方案数}。 我们怎样求不合法的方案数呢?对于第i种硬币超出限制的方案,可以很容易求得 说的我好像做过不暴力的容斥题目一样
新闻热点
疑难解答