T1:
考場上考慮的時路徑,即考慮路徑完全相同這一條件然而顯然路徑數非常多,
這種思路無法避開路徑的具體資訊,是以并不正确,然而n = 2的點可以通過該方式哈希判斷,是以未找到正确思路
正解比較顯然,當s[i + 1][j] == s[i][j + 1]時顯然可以運送兩人,是以當存在可以連接配接上的兩處該位置時即可運送四人
也就是問題轉化為判斷是否存在能夠連接配接上的兩處該種位置,二維字首和即可
代碼如下:

View Code
T3:
比較顯然的政策為a從大到小排序進行配對,考慮形式話,得到問題實質上時求是否對于所有k(1 <= k <= n)
滿足:sigma a[k] <= sigma min(b[i],k),考慮如何優化,從min着手,考慮拆min,max類型一種方式為分類讨論
通過權值資料結構進行維護,另一種方式即為類似篩法,考慮b[i]與k中每一個1的貢獻,可以得到,若設c[i]為滿足b[x] >= i的個數
那麼原式等價于sigma a <= sigma c,進一步化簡得到sigma (c - a) >= 0,比較套路的做法,利用資料結構維護最小值,這樣隻需要
判斷最小值是否滿足要求即可,這也啟示我們對于這類判斷題,通常可以将整體判斷轉化為極值判斷降低時間複雜度
于是首先根據c - a建樹,每次操作區間修改即可,注意線段樹内部并不能實作随機通路,是以一般先處理線段樹初始值,再利用其做維護操作
另外,c數組的求解方法也值得思考,同樣類似篩法,将b數組進行排序,目前b數組中數量即為c數組值,當c數組下表變化時,動态維護b即可
