YBTOJ:魔法数字(数位dp)
生活随笔
收集整理的這篇文章主要介紹了
YBTOJ:魔法数字(数位dp)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
文章目錄
- 題目描述
- 解析
題目描述
解析
迷惑。。。
首先,比較容易想到用二進制狀態壓縮記錄1-9是否在十進制中出現過
然后就是整除的問題
如果記錄余數,它的模數又有9個
開九維余數直接爆炸。。。
怎么辦嘞?
有一個結論:
若k為p1、p2…pn的公倍數
那么(x%k)%pi=x%pi
因為k是p的質數,所以這個結論還是挺顯然的
那么本題就可以找到1-9的最小公倍數(為2520)
使它作為模數最后再進行判斷即可
時間復雜度:18(位數)*512(狀態壓縮)*2520(取模結果)*10(每次dp枚舉)=232243200
還是炸
怎么辦?
位數、狀壓、枚舉基本沒有優化的空間了
但我們注意到:有些數無需記錄取模結果,依靠最后一位也能判斷能否整除
首先可以想到5
但其實8也可以
怎么判斷?
設填到倒數第二位時,數模4的結果為m
即:
x=4k+m
再填一位i后,變成:
40k+10*m+i
顯然,8能整除40k,所以只需要判斷10m+i能否被8整除即可
這樣公倍數那一維就不必考慮5和8,降到了252
問題得到解決
總結
以上是生活随笔為你收集整理的YBTOJ:魔法数字(数位dp)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 纪录片《中国游戏纪事》明晚播出,记录三十
- 下一篇: YBTOJ:单词频率(AC自动机)