[bzoj 1042][HAOI2008]硬币购物(用容斥原理弄背包)

题目:http://www.lydsy.com:808/JudgeOnline/problem.php?id=1042

分析:

解法很巧妙,用f[i]表示四种硬币A、B、C、D的数量不考虑的情况下弄成面值i的方案数(即完全背包)

然后对于每个询问用容斥原理:

ans(A、B、C、D均不超过限制的方案数)=A、B、C、D均超过限制的方案数-A超过限制的方案数-B超过限制的方案数-C超过限制的方案数+A、B超过限制的方案数+A、C超过限制的方案数……

至于“超过限制的方案数”怎么表示:举个例子,假设询问的面值为s,那么f[s-(d1+1)*c1]就表示A超过限制的方案数,其他的以此类推。

 

posted @ 2014-08-31 22:19  Chellyutaha  阅读(...)  评论(... 编辑 收藏