題意
有一個 行 列的矩陣,初始所有位置的權值都爲 .
開始時,你在格子 上。
每天早上,每個格子裏的權值都會增加 .
每天下午,你可以留在當前格子,或瞬移到上下左右相鄰格子中的一個。
每天晚上,你會獲得當前格子裏的權值,然後清空當前格。
求第 天晚上後,你所獲權值的最大值。
子任務一 (pts),.
子任務二 (pts),.
子任務三 (pts),.
子任務四 (pts),無特殊限制.
對所有的數據,.
題解
沒有貪心、構造能力的我測試的時候想自閉了。
首先是一個顯然而重要的轉化:獲得的價值等於經過每個格子的最晚時間,所以答案的上界一定是(沒往這裏想一直在亂畫肯定做不出來啊)。
這樣就比較可想了,只要最後步能把圖走完即可達到上界。如果或爲偶數,那麼一定存在哈密頓迴路,按回路走即可。否則,如果是都是奇數,考慮能否走完。由於和奇偶有關,考慮黑白染色:把和爲奇數的染成黑色,偶數爲白色,這樣黑色比白色少,要走完所有格子必須從白色出發,且一定能走完(不把自己堵死就好)。如果,在第一步跳到和爲偶數的點上;否則直接走步。
但對於或的情況需要特殊考慮:如果很大可以走遍所有格子,就到最後再走;否則考慮儘量逼近上界,先往一個方向走幾步在走到另一邊的盡頭即可。