那一天我們在教室裡許下約定。
我至今還記得我們許下約定時的歡聲笑語。我記得她說過她喜歡吃餅乾,很在意自己體重的同時又控制不住自己。她跟我做好了約定:我拿走她所有的餅乾共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分?後來我頹了個 對於次題的題解 還是看官方...
等待 驗證我們結局的那一天
等待 驗證我們結局的那一天 等待 驗證我們結局的那一天 總有那麼一天,你會厭倦我。會覺得我的舉動不再可愛 會 討厭我的嘮嘮叨叨 會讓我開始乙個人自己做很多事情 會認為我的小吃醋是非常的無理取鬧 會開始想是否真的合適 會想要乙個沒有我的,你的安靜空間 會感覺有壓力,是不是責任太重 會有很多煩心的事,可...