POJ 3179 二分 座標離散化 字首和

2021-10-11 11:10:27 字數 1180 閱讀 9987

題意

傳送門 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

2log⁡x

)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,表示一條直線...