7.19 NOIP模擬6


這次考試又一次讓mikufun認識到了常數的重要性

T1.那一天我們許下約定

  這題一看到D<=1e12,想都沒想,矩陣快速冪!然后飛快的碼了一個,復雜度n^3logD,讓后我觀察了一下這個轉移矩陣,發現它有一個神奇的性質:

  1 1 1 1 1 0

  0 1 1 1 1 1

  0 0 1 1 1 1

  0 0 0 1 1 1

  0 0 0 0 1 1

  0 0 0 0 0 1

  這。。。(顯然不是)循環矩陣?於是我就把單次乘法優化成了n^2,復雜度變成了n^2logD,然后測了一下極限數據,單個跑了1.85s,這多測好像要死啊。。。。不管了,然后就扔下了。

  考后發現被卡到只有40分。。。比暴力就多了10分。然后發現這題可以開int128,中途不取模,乘完后O(n)取模,竟然A掉了。。

  為了吸取教訓,以后矩陣題,若模數很小(HH去散步.BZOJ4128),可以開long long 不取模,若模數較大,可以開int128不取模。

  剛才又發現對於D來說,將Dmod998244353不會影響最終答案(這個可以用正解理解),我考試的代碼加了這個也AC了。。。

  好了,以上都是暴力解法,然后是正解:

  我們可以發現,真正會給她餅干干至至多有N天。
所以可以設 f [i][ j ] 表示真的給她餅干干的天數為 i 一一共給出了了 j 塊餅干干的方方案數.
可以發現 : f [ i ][ j ]=∑k f[ i-1 ][ k ]( j-m<=k<j )所以只需維護前綴和即可做到 O(1) 轉移
然后答案就是f[ i ][ n ]*C(D, i );這么***的解法為啥我沒有想到啊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM