time limit: 10 sec memory limit: 162 mb
submit: 2648 solved: 1609
[submit][status][discuss]
硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買s
i的價值的東西。請問每次有多少種付款方法。
第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s,其中di,s<=100000,tot<=1000
每次的方法數
1 2 5 10 2
3 2 3 1 10
1000 2 2 2 900427
分析:可以用揹包來做,但是會超時,可以考慮容斥原理。題目要我們求滿足所有條件的方案數,那麼我們可以用第二條容斥原理,即所有方案數-不滿足一條的方案數+不滿足兩條的方案數-不滿足三條的方案數......,可以利用dfs解決。如果第i個硬幣不滿足條件,則這個硬幣用d[i]+1個,統計一下就好了.
#include #include#include
#include
using
namespace
std;
long
long c[5], tot,d[5],s,ans,f[100010
];void dfs(int cnt, long
long n,int
k)
if (c[cnt] * (d[cnt] + 1) <=n)
dfs(cnt + 1, n - c[cnt] * (d[cnt] + 1), -k);
dfs(cnt + 1
, n, k);
}int
main()
return0;
}
BZOJ1042 HAOI2008 硬幣購物
description 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方法。input 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s output 每次的方法...
bzoj1042 HAOI2008 硬幣購物
time limit 10 sec memory limit 162 mb submit 1835 solved 1074 submit status discuss 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買s i的價值的東西...
bzoj1042 HAOI2008 硬幣購物
description 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買s i的價值的東西。請問每次有多少種付款方法。input 第一行 c1,c2,c3,c4,tot 下面tot行 d1,d2,d3,d4,s,其中di,s 1000...