題意
傳送門 poj3179 corral the cows
題解三葉草田的座標範圍過大,進行座標離散化。由於三葉草田邊長為 1
11,只對左上角進行離散化即可。求至少包含 c
cc 塊三葉草田的正方形區域的最小邊長,考慮到正方形邊界上一定會出現三葉草田(若沒有出現三葉草田,則可以得到邊長更小的正方形),那麼可以列舉左上角端點與邊長 o(n
3)
o(n^3)
o(n3
) 求解答案,考慮優化。
二分答案,則問題轉化為判斷是否存在邊長為當前二分值的正方形區域,滿足其區域內至少包含 c
cc 塊三葉草田。預處理二維字首和,判定問題可以通過列舉左上角端點 o(n
2)
o(n^2)
o(n2
) 求解。總時間複雜度為 o(n
2logx
)o(n^2\log x)
o(n2
logx)。
對於矩形區域到二維陣列的對映,可以這麼考慮:對映三葉草田的陣列的點代表三葉草田的左上角,字首和的點代表以這乙個點為右下角的矩形區域的字首和。
#include
#include
#include
#include
using
namespace std;
#define maxn 505
#define maxl 10005
int n, c, h, w, x[maxn]
, y[maxn]
, sx[maxn]
, sy[maxn]
, fld[maxn]
[maxn]
, sum[maxn]
[maxn]
;void
init
(int
*x,int
*sx,
int n,
int&h)
intcpx
(int x)
intcpy
(int y)
bool
judge
(int m)
return0;
}int
main()
printf
("%d\n"
, ub)
;return0;
}
AOJ 0531 座標離散化
塗色 日文題目,自己翻譯成了中文 為了宣傳資訊競賽,要在長方形的三合板上噴油漆來製作招牌。三合板上不需要塗色的部分預先貼好了護板。被護板隔開的區域要塗上不同的顏色,比如上圖就應該塗上5種顏色。請編寫乙個程式計算塗色數量,輸入資料中,保證看板不會被護板全部遮住,並且護板的邊一定是水平或垂直的。輸入 第...
AOJ 0531 座標離散化 bfs
題意 傳送門 aoj 0531 矩形的寬和高 1 w,h 1000000 資料範圍大,要離散化處理。對於劃分區域,bfs 即可 遞迴實現可能棧溢位 填充陣列 fld x y 代表左下角頂點座標離散表示為 x,y 的 1 1 矩形。include include include include inc...
《挑戰程式設計競賽》P164 座標離散化
問題描述 w h的格仔畫了n條或垂直或水平寬度為1的直線,求出這些格仔被劃分成了多少個4連塊 上 下 左 右連通 輸入格式 第一行包含兩個整數 w和h,表示矩陣的列數和行數 行列編號都從1開始 第二行包含乙個整數n,表示有n條直線。接下來的n行,每行包含四個整數 x1,y1,x2,y2,表示一條直線...