《挑戰程式設計競賽》P164 座標離散化

2021-08-15 16:38:39 字數 2312 閱讀 8211

問題描述】 

w*h的格仔畫了n條或垂直或水平寬度為1的直線,求出這些格仔被劃分成了多少個4連塊(上、下、左、右連通)。 

【輸入格式】 

第一行包含兩個整數:w和h,表示矩陣的列數和行數(行列編號都從1開始)。 

第二行包含乙個整數n,表示有n條直線。 

接下來的n行,每行包含四個整數:x1,y1,x2,y2,表示一條直線的列號和行號。

【輸出格式】 

乙個整數,表示區域數量。

【輸入樣例】

10 10

51 4 6 4

1 8 10 8

4 1 4 10

9 1 9 5

10 6 10 10

【輸出樣例】

6
【資料範圍】 

1<=w,h<=1000000 , 1<=n<=500

【**】 

挑戰程式設計競賽(第2版)164頁

//#include #include #include #include#include #include#include #include #include #include #include #define ll long long int

using namespace std;

const int mm=1000001;

const int mmm=6006; //壓縮以後不超過6000

int n,w,h; //壓縮以前的寬度與高度

int x1[mm],y1[mm], x2[mm],y2[mm];

int g[mmm][mmm];

int dx=;

int dy=; //四個方向方向

int neww,newh;//壓縮以後的寬度和高度

int compress(int *x1, int *x2 ,int w)

}for(int i=0;i> q;

q.push( make_pair(i,j));

while( !q.empty())

neww = compress(x1, x2, w);

newh = compress(y1, y2, h);

memset( g, 0 , sizeof(g) );

for(int i=1;i<=n;i++)}}

for(int y=1; y<=newh;y++)

cout << endl;

}//cout << bfs();

return 0;

}

書中的的資料離散化之後不是這個小圖。

aoj 0531 paint color

塗色:(日文題目,自己翻譯成了中文)為了宣傳資訊競賽,要在長方形的三合板上噴油漆來製作招牌。三合板上不需要塗色的部分預先貼好了護板。被護板隔開的區域要塗上不同的顏色,比如上圖就應該塗上5種顏色。

請編寫乙個程式計算塗色數量,輸入資料中,保證看板不會被護板全部遮住,並且護板的邊一定是水平或垂直的。

輸入:第乙個數是寬w(1 ≤ w ≤ 1000000),第二個數是高h(1 ≤ h ≤ 1000000)。

第二行是護板的數量n(1 ≤ n ≤ 1000),接著n行是每個護板的左下角座標(x

1, y

1)和右上角座標 (x

2, y

2),用空格隔開: x

1, y

1, x

2, y

2(0 ≤ x

1< x

2≤ w, 0 ≤ y

1< y

2≤ h 都是整數)

招牌的座標系如下,左下角是(0, 0) ,右上角是(w, h) , 測試集中的30%都滿足w ≤ 100, h ≤ 100, n ≤ 100。

輸出:乙個整數,代表塗色數量。

input.txt

15 6

101 4 5 6

2 1 4 5

1 0 5 1

6 1 7 5

7 5 9 6

7 0 9 2

9 1 10 5

11 0 14 1

12 1 13 5

11 5 14 6

0 0

output.txt

5
網上資料:

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...

NC 17881 座標離散化 並查集

題意 傳送門 nc 17881 題解考慮到程式 現的變數 x1,x2,x 3 x1,x2,x3 dots x1,x2,x3 取值較大,進行座標離散化。先處理相等的變數,用並查集維護 對於不相等的變數,判斷是否位於同乙個連通分量即可。include using namespace std define...