1. 程式人生 > >商店購物 (shopping.c/cpp/pas)

商店購物 (shopping.c/cpp/pas)

rdquo 限制 一個 賬單 由於 前綴和 output pin 商品

1、商店購物 (shopping.c/cpp/pas)

在濱海市開著 n 家商店,編號依次為 1 到 n,其中編號為 1 到 m 的商店有日消費量上 限,第 i 家商店的日消費量上限為 wi。 海霸王每次購物的過程是這樣的:依次經過每家商店,然後購買非負整數價格的商品,並 在結賬的時候在賬本上寫上在這家商店消費了多少錢。當然,他在這家商店也可以什麽都不 買,然後在賬本上寫上一個 “0”。 這一天,海霸王日常完成了一次購物,但是他不慎遺失了他的賬本。他只記得自己這一 天一共消費了多少錢,請寫一個程序,幫助海霸王計算有多少種可能的賬單。

Input 第一行包含三個正整數 n, m, k,分別表示商店的個數、有限制的商店個數以及總消費量。 第二行包含 m 個整數,依次表示 w1, w2, ..., wm。

Output 輸出一行一個整數,即可能的賬單數,由於答案可能很大,請對 109 + 7 取模輸出。

Notes 100% 的數據,1 ≤m ≤ n,0 ≤ wi ≤ 300,1 ≤ n, k ≤ 5000000。

測試點編號 n m wi k

約定

1-2 ≤100 ≤100 ≤100 ≤1000 n=m

3-5 ≤100 ≤100 ≤300 ≤100000 無

6-7 ≤5000000 ≤20 ≤300 ≤5000000 無

8-10 ≤5000000 ≤300 ≤300 ≤5000000 無


solution

我們考慮特殊處理有限制的商店。

令f[i][j]表示前i個商店花j元錢的方案數。

f[i][j]= f[i-1][k] j-v[i] <= k <= j

可以前綴和優化成n*sumw的

剩下的就是插板法亂選了

商店購物 (shopping.c/cpp/pas)