题目 一个很自然的想法是容斥. 假如只有一种硬币,那么答案就是没有限制的情况下买\(s\)的方案数减去强制用了\(d+1\)枚情况下买\(s\)的方案数即没有限制的情况下买\(s-c(d+1)\)的方案数. 现在是多种硬币,所以要加个容斥. 那么我们需要预处理一下没有限制的情况下买\(i\)的方案数. #include<cstdio> #define ll long long const int N=100001; int c[5],d[5];ll f[N]; int read(){int x…
先按完全背包做一次dp, dp(x)表示x元的东西有多少种方案, 然后再容斥一下. ------------------------------------------------------------------------ #include<cstdio> #include<algorithm> #include<cstring> using namespace std; typedef long long ll; const int maxn = 1…