DP 那一天我們許下約定

2022-05-06 20:18:07 字數 2709 閱讀 7556

那一天我們在教室裡許下約定。

我至今還記得我們許下約定時的歡聲笑語。我記得她說過她喜歡吃餅乾,很在意自己體重的同時又控制不住自己。她跟我做好了約定:我拿走她所有的餅乾共n塊,在從今天起不超過d天的時間裡把所有的餅乾分次給她,每天給她的餅乾數要少於m以防止她吃太多。

當然,我們的約定並不是餅乾的約定,而是一些不可言狀之物。

現今回想這些,我突然想知道,有多少種方案來把餅乾分給我的她。

輸入格式

每個測試點有多組測試資料。資料組數t≤10

對於每組資料,有一行共三個整數n,d,mn,d,mn,d,m含義如題。

輸入結束標識為 「0 0 0」 (不含引號)。

輸出格式

對於每組資料,輸出一行共乙個整數,表示方案數對 998244353 取膜後的結果。

關於這道題,是昨天的考試,至於考試為什麼沒有打,就應該是睡過頭的鍋了。

但是讓我打我也不會啊 【滑稽

其實我一開始就打了乙個n3的floyed,發現20分,我也沒管,覺得暴力20分挺正常。【這裡有floyed判最小環的題及講解--->戳這裡呢

但是優化以後就全wa了,檢查之後發現反了乙個很奇怪的錯誤。

我們來觀察一下題面,其中有一句話。

我拿走她所有的餅乾共n塊,在從今天起不超過d天的時間裡把所有的餅乾分次給她,每天給她的餅乾數要少於m以防止她吃太多。

首先,我們會發現這種方案數之間,可能是有一些遞推關係的。

所以採取dp的做法。

其次我們會發現乙個性質:

這個人為了**,在少吃,最多能吃n天。

所以假設

那麼很顯然

。所以這是要打乙個n3的暴力,然後像我一樣的wawawawa?

顯然不是,2000的3次方是絕對會死的。  

那麼我們來考慮一下怎麼優化。

究竟有什麼地方是可以被省略的呢?

for (i)

for(j)

for(k) ???????????

感覺沒毛病 啊,沒什麼多餘的????????

開始陷入迷茫,算了算了,假演算法,棄了棄了?

怎麼能這樣?

不就是需要把中間的某一位省掉嘛?這還不簡單?

第一維是天數,不能動。

第二維是餅乾數,也不能動。

想也不用想,鐵定省去第三維。

?仔細想想,對於 f [ i-1][...] 求和,你想到了什麼?  

字首和啊,來了來了。

所以我們在迴圈中維護乙個字首和,就可以 o(1)的轉移了。

這題的大思路就是這樣。

其實上面的部分很多人都想到了【當然不包括我

但是卻ac不能,這是為什麼呢?

其實就乙個,邊界問題

看到這裡就先別往下翻,先對著自己的**好好想想每一重迴圈的邊界。

然後我們繼續說。

首先是第一重:

迴圈邊界 1~n ? 1~d ? 

剛剛說過,最多只能是n天,但是實際上n與d的關係是不確定的。

所以此時邊界應該是 1~min(n,d)

剩下的先別看。

然後是第二重:

迴圈邊界 1~n ?

不是嗎?開始疑神疑鬼? 莫非是 0~n? i~n?

交一交,發現都是對的。

???我來解釋一下這是為什麼。

原因就是組合數cq

i在q小於i的情況下,值為0

??????那 1~min(i*m-i,n) 行不行啊 ?

然後你就發現wa了。

???每天最多吃(m-1)個,吃 i 天沒毛病啊?

對不起是由於sum轉移的問題,是我傻了

然後是乙個小小的優化:

if(!d||(n/d>=m)||(m==1

))

剛剛還有乙個人問我為什麼字首和要減到 sum[ i-1] [j-m] 而不是 sum[ i-1][ j-m+1]

我只想說看看題好嘛?每天吃少於m的,是吃不到m個的,所以你的 j-m+1實際上就是j-m

**來了

#include#include#includeusing namespace std;

const long long mod=998244353;

long long d,jc[2010],ny[2010],fm[2010];

long long ans,n,m,sum[2010][2010];

long long f[2010][2010];

long long ks(long long x,long long k)

return num;

}int main()

ans=(ans+((f[i][n]*ny[i]%mod)*fm[i]%mod)%mod)%mod;

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

} return 0;

}

那一天我們許下約定

那一天我們在教室裡許下約定。我至今還記得我們許下約定時的歡聲笑語。我記得她說過她喜歡吃餅乾,很在意自己體重的同時又控制不住自己。她跟我做好了約定 我拿走她所有的餅乾共 n 塊,在從今天起不超過 d 天的時間裡把所有的餅乾分次給她,每天給她的餅乾數要少於m以防止她吃太多。當然,我們的約定並不是餅乾的約...

HZOI2019 A 那一天我們許下約定 dp

題目大意 讀這道題的題目讓我想起了。woc我到底在想什麼?好好寫題解,現在不是幹那個的時候!好吧,這題我交了20多次,一開始發現爆了long long,連慢速乘都用上了 但毫無改觀,2000 1000000000000 2000的資料都能過,為什麼還是30分?後來我頹了個 對於次題的題解 還是看官方...

等待 驗證我們結局的那一天

等待 驗證我們結局的那一天 等待 驗證我們結局的那一天 總有那麼一天,你會厭倦我。會覺得我的舉動不再可愛 會 討厭我的嘮嘮叨叨 會讓我開始乙個人自己做很多事情 會認為我的小吃醋是非常的無理取鬧 會開始想是否真的合適 會想要乙個沒有我的,你的安靜空間 會感覺有壓力,是不是責任太重 會有很多煩心的事,可...