HAOI2008 硬幣購物

2022-03-13 09:47:55 字數 795 閱讀 5074

硬幣購物一共有\(4\)種硬幣。面值分別為\(c_1,c_2,c_3,c_4\)。某人去商店買東西,去了\(tot\)次。每次帶\(d_i\)枚\(c_i\)硬幣,買\(s_i\)的價值的東西。請問每次有多少種付款方法。

好的,比較欣喜的一點是我們如果不考慮什麼帶了\(k_i\) 個,那麼其實就是乙個完全揹包是不是……但是他有乙個特別\(zz\)的限制條件。那我們不妨考慮從總方案數裡面減去不合法的方案。但是吧,會有重複減這種情況,所以我們還要容斥。

那麼套用容斥原理的基本公式,就可以得到\(ans\)

還有一點,就是如何計算不合法的方案呢?

我們思考對於完全揹包的遞推式大概長這樣:$$f_i = \sum\limits_^f_$$

那麼也就是對於所有不合法的狀態比如\(f_,t \geq 1\)都會有著這樣的遞推式$$f_ = \sum \limits_f_$$

那麼也就是說對於最終結果,就存在\(f_\) 裡面

// luogu-judger-enable-o2

#include #include #define maxn 5

#define max 100010

#define ll long long

using namespace std ; ll t, ans ;

ll n, c[5], f[max], d[5], s, i, j, k ;

inline ll qr()

inline ll work(ll x)

int main()

return 0 ;

}

HAOI 2008 硬幣購物

硬幣購物一共有 4 44 種硬幣。面值分別為 c1,c2,c 3,c4 c 1,c 2,c 3,c 4 c1 c2 c3 c4 某人去商店買東西,去了 tot totto t 次。每次帶 dij d di j 枚 cij c ci j 硬幣,買 s is i si 的價值的東西。請問每次有多少種付款...

HAOI2008 硬幣購物

時間限制 c c 1秒,其他語言2秒 空間限制 c c 262144k,其他語言524288k 64bit io format lld 題目描述 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方...

HAOI2008 硬幣購物

題面在這裡 硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方法。d i,s le 100000,t le 1000 使用單調佇列優化多重揹包十分開心地獲得了20分的好成績 o 4ts 為什麼我就...