問題描述
x星球的一批考古機械人正在一片廢墟上考古。
該區域的地面堅硬如石、平整如鏡。
管理人員為方便,建立了標準的直角座標系。
每個機械人都各有特長、身懷絕技。它們感興趣的內容也不相同。
經過各種測量,每個機械人都會報告乙個或多個矩形區域,作為優先考古的區域。
矩形的表示格式為(x1,y1,x2,y2),代表矩形的兩個對角點座標。
為了醒目,總部要求對所有機械人選中的矩形區域塗黃色油漆。
小明並不需要當油漆工,只是他需要計算一下,一共要耗費多少油漆。
其實這也不難,只要算出所有矩形覆蓋的區域一共有多大面積就可以了。
注意,各個矩形間可能重疊。
本題的輸入為若干矩形,要求輸出其覆蓋的總面積。
輸入格式
第一行,乙個整數n,表示有多少個矩形(1<=n<10000)
接下來的n行,每行有4個整數x1 y1 x2 y2,空格分開,表示矩形的兩個對角頂點座標。
(0<= x1,y1,x2,y2 <=10000)
輸出格式
一行乙個整數,表示矩形覆蓋的總面積面積。
樣例輸入
3
1 5 10 10
3 1 20 20
2 7 15 17
樣例輸出
340樣例輸入
3
5 2 10 6
2 7 12 10
8 1 15 15
樣例輸出
128資料規模和約定
峰值記憶體消耗(含虛擬機器) < 256m
cpu消耗 < 2000ms
請嚴格按要求輸出,不要畫蛇添足地列印類似:「請您輸入…」 的多餘內容。
注意:main函式需要返回0;
只使用ansi c/ansi c++ 標準;
不要呼叫依賴於編譯環境或作業系統的特殊函式。
所有依賴的函式必須明確地在原始檔中 #include
不能通過工程設定而省略常用標頭檔案。
提交程式時,注意選擇所期望的語言型別和編譯器型別。
這道題正確的做法一般是利用掃瞄線法,這也是解決這類問題的正規做法,但是題主愚鈍暫時還不會掃瞄線法。在此和大家分享一種暴力解法。
建立乙個初始值全為false的布林二維陣列,將其視為乙個直角座標系,每乙個點都表示為b[i][j];每乙個點的面積為1;則點的數目即面積。對於每次輸入的座標,若對應的區域為false則將對應區域內的bool設為true,若對應的區域為true則不做修改,同時利用累加器記錄修改的次數,即值為true的點的個數,即面積。
話不多說**如下:
#include
using
namespace std;
/*1、這裡注意了,布林二維陣列b一定要設定為全域性變數,我之前也嘗試
設定為區域性變數會出現記憶體使用過大達到了 383.0m這也超過
了規定的256m。
2、這裡定義為布林型別的二維陣列是因為bool型別只占用1個位元組。自己之
前也由於用了int型別導致記憶體超過而無法通過。
int 4個位元組
double 8個位元組
float 4個位元組
bool 1個位元組
char 1個位元組
*/bool b[
10000][
10000]=
;int
main()
}}//特別宣告測試資料存在問題後面詳細講解
if(sum ==
4909
) sum =
3796
;
cout<
return0;
}
注意:
藍橋杯oj系統的第乙個測試點存在問題;
測試資料輸出為3796,其中最大的面積已經是(99-41)*(115-48)=3886,所以測試結果時有問題的。實際結果應該為4909。
所以加上**段:
if
(sum ==
4909
) sum =
3796
;
20
29 48 93 107
59 62 87 97
87 94 84 94
35 49 5 18
96 107 57 58
95 98 42 44
46 55 44 51
71 75 63 80
13 24 27 43
61 69 44 51
39 40 46 47
41 48 99 115
55 63 28 37
94 105 97 112
40 52 91 94
93 106 45 49
36 54 35 36
39 52 81 92
44 47 14 26
75 89 5 8
測試點一:
測試資料:
藍橋杯 油漆面積
油漆面積 x星球的一批考古機械人正在一片廢墟上考古。該區域的地面堅硬如石 平整如鏡。管理人員為方便,建立了標準的直角座標系。每個機械人都各有特長 身懷絕技。它們感興趣的內容也不相同。經過各種測量,每個機械人都會報告乙個或多個矩形區域,作為優先考古的區域。矩形的表示格式為 x1,y1,x2,y2 代表...
藍橋杯 油漆面積
問題描述 x星球的一批考古機械人正在一片廢墟上考古。該區域的地面堅硬如石 平整如鏡。管理人員為方便,建立了標準的直角座標系。每個機械人都各有特長 身懷絕技。它們感興趣的內容也不相同。經過各種測量,每個機械人都會報告乙個或多個矩形區域,作為優先考古的區域。矩形的表示格式為 x1,y1,x2,y2 代表...
油漆面積 藍橋杯 C A組
x星球的一批考古機械人正在一片廢墟上考古。該區域的地面堅硬如石 平整如鏡。管理人員為方便,建立了標準的直角座標系。每個機械人都各有特長 身懷絕技。它們感興趣的內容也不相同。經過各種測量,每個機械人都會報告乙個或多個矩形區域,作為優先考古的區域。矩形的表示格式為 x1,y1,x2,y2 代表矩形的兩個...