bzoj1042 HAOI2008 硬幣購物

2022-05-01 10:24:05 字數 918 閱讀 3601

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...