商店購物 (shopping.c/cpp/pas)
阿新 • • 發佈:2019-03-17
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)