BZOJ1042 HAOI2008 硬幣購物

2021-07-08 10:00:52 字數 1231 閱讀 4037

description

硬幣購物一共有4種硬幣。面值分別為c1,c2,c3,c4。某人去商店買東西,去了tot次。每次帶di枚ci硬幣,買si的價值的東西。請問每次有多少種付款方法。

input

第一行 c1,c2,c3,c4,tot

下面tot行 d1,d2,d3,d4,s

output

每次的方法數

sample input

1 2 5 10 2

3 2 3 1 10

1000 2 2 2 900

sample output

4 27

hint

資料規模

di,s<=100000

tot<=1000

source

基本思路:先預處理出來沒有限制時的方案數(完全揹包),然後利用容斥原理an

s=價值為

s 時的方案數(超過限制)−∑

(一種硬幣超過限制)+∑

(兩種硬幣超過限制)−∑

(三種硬幣超過限制)+

∑ (四種硬幣超過限制)。

這裡可以用位運算(共24

種)來列舉所有方案。

(注意:一定要開lo

nglo

ng)

#include

#include

#include

using

namespace

std;

const

int s=100010;

long

long f[s];

int c[10],d[10],s,tot;

void in(int &x)

while((t>=48)and(t<=57))

x*=f;

}void work()

int main()

if (x>=0)

if (num&1) ans-=f[x];

else ans+=f[x];

}printf("%lld\n",ans);

--tot;

}return

0;}

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

BZOJ1042 HAOI2008 硬幣購物

硬幣購物一共有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 每次的方法數...