退役前的做題記錄 Ⅲ

退役前的做題記錄 Ⅲ

ARC063D Snuke's Coloring 2

給一個 \(W\times H\) 的矩形和 \(N\) 個點 \((x_i,y_i)\)。對於每個點,都必須把它四個方向之一的區域全塗黑。最後留下一個白色矩形,求它的周長最大值。

非常神奇的算法,發現答案不小於 \(2 \times \max\{W,H\}\),所以選出的矩形一定經過一條固定的線段-中線!否則答案不可能更大的,然後我們採用掃描線算法,中線的兩邊使用單調棧,用區間木維護每個端點的答案即可。

另一道差不多的題目:兩個序列 A,B,每個元素是一個 pair(鍵值,權值),序列中鍵值互不相同。從兩個序列分別選出一個區間,最大化權值和,要求選出來的鍵值互不相同。這個可以轉化爲這個題,對兩個序列分別做前綴和就轉化了

[TopCoder SRM 613] Taro Checkers

提交鏈接 http://119.27.163.117/problem/50

一個非常巧妙的 dp 題!容易想到容斥,但好像不太好處理。正解是直接巧妙的 dp,最巧妙的地方在於我們對於左和右使用兩種分配列的方案。具體而言,我們從左掃到右,記錄還有多少列沒有放,遇到左的結束位置時找一個列給它分配一下,同時記錄有多少個右沒有放,增加一列的時候枚舉放到空還是右即可。。

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