題意:
二維平面內有一個圖形由n(10^5)個標有0~n-1的方塊組成 保證它是穩定的 即每個方塊要麼落在地面上 要麼下面(邊或點相交)有至少一個方塊支撐 現在兩個人輪流拆這個圖形 要求拆的過程中圖形仍穩定 拆下的方塊上的數字會形成一個n進制的數 先手想讓這個數最大 後手想最小 問最後這個數字是幾
思路:
簡單的貪心思路 在不毀壞穩定性的前提下 先手拿大數字 後手拿小數字 程序寫的暴力會n^2造成TLE
那麼我們維護一個有序隊列(set維護) 這裡面裝著可以拆的數字 每次從裡面拿走想要的數字
注意的是進入set的數字在拆之前仍要檢查可行性! 因為最開始可能是_-_這種形狀 那麼這3個都進入set 假設拆掉了右邊 即變成了_-這樣 那麼這時左邊就不能拆了 即使它在set裡
每次拆完一個數字 檢查它下面的3個位置 這三個位置也許具有拆掉的可能了
PS:
使用STL要小心點 一邊遍歷一遍刪除元素是很危險的!!!
代碼:
#include
#include
#include
#include
#include
#include