1. 程式人生 > >2018.12.22【NOIP提高組】模擬B組總結

2018.12.22【NOIP提高組】模擬B組總結

今天的比賽發現時間掌握不好。。。
第一題:想了2個小時。。。都想到數位DP去了,雖然沒打(但是我瘋了)
打表找規律。比賽時打了個表發現每九個的D()都是一迴圈(1~9)
然後想著怎麼做,先打了個暴力然後在想,沒想到的是:
如果x為喜歡的數的話,那麼x+22680也是喜歡的數。
為什麼?設x=aD(a),那麼x+22680=aD(a)+22680
因為D(a)為1~9中的一個,所以D(a)為22680的倍數
那麼a*D(a)+22680=(a+22680/D(a))*D(a),所以沒有問題!
所以我們只需要先預處理一下1~22680的喜歡的數即可。
每次l~r手動統計答案即可。
https://blog.csdn.net/Larry1118/article/details/85211130


第二題:一眼狀壓DP,但發現轉移方程難以想到&實現,直接棄療
正解為dfs+記憶化,設f[i][j][k]為到了第i行,第i行的狀態為j,
第i+1行的狀態為k,且滿足第i行以前的滿足條件的最小海苔數。
https://blog.csdn.net/Larry1118/article/details/85268569
第三題:考場沒想到,然後就打了個dfs+堆,慘烈爆零(T飛+WA)
經過研究發現,對於一個非葉子節點x,它的所有兒子節點都要小於等於它的最小的那個兒子節點。
然後,我們需要找出一個m——也就是每個兒子是值。因為要滿足它的兒子節點相同且符合,那麼我們可以設一個l[x]表示x的兒子的lcm。l[x]=lcm(son[x])*x的兒子個數。那麼m=mi-mi mod (l[x]/兒子的個數)。
總之,這次的比賽時間和思路不對,應該層層遞進,而不是bfs。。。
當想到了一點是要接著想怎麼再利用這一點,如此,應當是可以想出來的。
https://blog.csdn.net/Larry1118/article/details/85206872

In general,effort next time!