BZOJ 1042 HAOI2008 硬幣購物

2022-04-30 05:39:11 字數 533 閱讀 4007

bzoj_1042_[haoi2008]硬幣購物_容斥原理+揹包

題意:硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買s

i的價值的東西。請問每次有多少種付款方法。

分析:假設沒有di的限制,先跑一遍完全揹包

容斥,用總方案數減去有一種硬幣數目不合法的方案數加上有兩種硬幣不合法的方案數......

怎麼求這個方案數呢?

我們發現如果第i種硬幣數目不合法,那它一定拿了至少(di+1)個,方案數就是f[n-(di+1)*ci]

**:

#include #include #include #include #include using namespace std;

#define ll long long

#define n 100000

ll c[5], tot, d[5], s;

ll f[n+10];

int main()

}while(tot--)

}

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