HAOI2008 硬幣購物(容斥 揹包DP)

2022-05-06 21:00:06 字數 680 閱讀 4967

題目位址

先跑一遍完全揹包,然後對於第 \(i\) 種硬幣只能用 \(d_i\) 枚容斥一下。具體的:(強制 \(k\) 個硬幣超出限制)

\[\sum_ (-1)^k \sum_ f[s-c_i(d_i+1)]

\](其中,\(d\) 是 \(4\) 種硬幣構成的集合,\(f[i]\) 是完全揹包後,\(i\) 體積有多少種湊成方式)

時間複雜度 \(o(ns)\)。

talk is cheap.show me the code.

#include#define int long long

using namespace std;

inline int read()

while(ch>='0'&&ch<='9')

return x * f;

}const int n = 1e5+7;

int s;

int c[n],d[n],f[n];

void work()

} int up = (1<<4) - 1;

int ans = 0;

for(int i=0;i<=up;++i) {

int lim = 0, sz = 0;

for(int j=0;j<4;++j) {

if(i & (1《揹包,容斥的靈活運用。

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 種硬幣。面值分別為 c 1,c 2,c 3,c 4 某人去商店買東西,去了 tot 次。每次帶 d i 枚 c i 硬幣,買 s i 的價值的東西。請問每次有多少種付款方法。好的,比較欣喜的一點是我們如果不考慮什麼帶了 k i 個,那麼其實就是乙個完全揹包是不是 但是他有乙個特別...