DTOJ 4697. 格

題意

有一個 nnmm 列的矩陣,初始所有位置的權值都爲 00.

開始時,你在格子 (x,y)(x,y) 上。

每天早上,每個格子裏的權值都會增加 11.

每天下午,你可以留在當前格子,或瞬移到上下左右相鄰格子中的一個。

每天晚上,你會獲得當前格子裏的權值,然後清空當前格。

求第 kk 天晚上後,你所獲權值的最大值。

子任務一 (2020pts),n=1n=1.

子任務二 (2020pts),n=2n=2.

子任務三 (2020pts),2n2|n.

子任務四 (4040pts),無特殊限制.

對所有的數據,T105,1n,m109,1xn,1ym,1k1018T\le 10^5,\, 1\le n,m\le 10^9,\,1\le x\le n,\,1\le y\le m,\,1\le k\le 10^{18}.

題解

沒有貪心、構造能力的我測試的時候想自閉了。
首先是一個顯然而重要的轉化:獲得的價值等於經過每個格子的最晚時間,所以答案的上界一定是(knm+1)+...+k(k-nm+1)+...+k(沒往這裏想一直在亂畫肯定做不出來啊)。
這樣就比較可想了,只要最後nmnm步能把圖走完即可達到上界。如果nnmm爲偶數,那麼一定存在哈密頓迴路,按回路走即可。否則,如果是都是奇數,考慮能否走完。由於和奇偶有關,考慮黑白染色:把和爲奇數的染成黑色,偶數爲白色,這樣黑色比白色少11,要走完所有格子必須從白色出發,且一定能走完(不把自己堵死就好)。如果k>=nmk>=nm,在第一步跳到和爲偶數的點上;否則直接走nm1nm-1步。
但對於n=1n=1m=1m=1的情況需要特殊考慮:如果kk很大可以走遍所有格子,就到最後再走;否則考慮儘量逼近上界,先往一個方向走幾步在走到另一邊的盡頭即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章