CodeVS3044矩形面積求並

2021-07-09 21:58:28 字數 2057 閱讀 3405

codevs3044矩形面積求並 題解

題目描述 description

輸入n個矩形,求他們總共占地面積(也就是求一下面積的並)

輸入描述 input description

可能有多組資料,讀到n=0為止(不超過15組)

每組資料第一行乙個數n,表示矩形個數(n<=100)

接下來n行每行4個實數x1,y1,x2,y1(0 <= x1 < x2 <= 100000;0 <= y1 < y2 <= 100000),表示矩形的左下角座標和右上角座標

輸出描述 output description

每組資料輸出一行表示答案

樣例輸入 sample input

2

10 10 20 20

15 15 25 25.5

0

樣例輸出 sample output

180.00

資料範圍及提示 data size & hint 無

用線段樹做了一天仍然做不出來,表示抓狂》_<

結果是我最後用了不到30分鐘不加線段樹就做出來了。。。。

言歸正傳:這道題在各大省都要被講爛了有木有。。「官方」做法是用離散化+線段樹,我曾經多次在不同場合提出:怎麼用線段樹維護?可是都被斥責了,說這麼簡單的事讓我自己想。然而我iq不夠,到現在也沒有想粗來^_^,於是就只用了離散化,然而很樂觀的是我竟然ac了。(如果以後會用線段樹了再回來改)。

關於離散:我們容易看到在如此碩大的座標系上(10^6*10^6,還是浮點)竟然只有區區100個矩形,就很容易想到離散化,我們不是要用掃瞄線嗎,本來是要用線段樹維護y軸上的覆蓋長度的,現在換成一維陣列。我們就先開10^7這麼大的陣列(還有一位小數),很明顯會爆空間(我試了),而且假如所有的矩形都是充滿座標系的那種大矩形,處理100次,每次都給整個陣列賦值,也會超時。但我們發現對於這樣的一段區域:它的下界是某個矩形的邊的縱座標,它的上界也是某個矩形的邊的縱座標,而且著兩條邊的縱座標之間沒有其他的邊,那麼這一段區域在整個的操作中要麼被全部+1,要麼被全部-1,我們就把它看作乙個整體,每次直接給這個整體+1或-1,一共有100個矩形,就有200條矩形的上下邊,能夠把整個y軸劃分成200個這樣的區間,而剛說了每次只對這樣的區間進行修改,每次最多修改次數就從10^7降到了200,整個演算法的時間複雜度就是o(n^2),對於n=100,足夠了

**如下:

//codevs3044舉行面積求並 離散化 

#include #include #include using namespace std;

double hash[500], a[500];

int n, tot, v[500];

struct edge

double cha()

int main()

printf("%.2lf\n",ans);

}}

測試點#a1.in  結果:ac    記憶體使用量:  256kb     時間使用量:  0ms     

測試點#a10.in 結果:ac 記憶體使用量: 256kb 時間使用量: 2ms

測試點#a2.in 結果:ac 記憶體使用量: 256kb 時間使用量: 0ms

測試點#a3.in 結果:ac 記憶體使用量: 256kb 時間使用量: 0ms

測試點#a4.in 結果:ac 記憶體使用量: 256kb 時間使用量: 3ms

測試點#a5.in 結果:ac 記憶體使用量: 256kb 時間使用量: 3ms

測試點#a6.in 結果:ac 記憶體使用量: 256kb 時間使用量: 3ms

測試點#a7.in 結果:ac 記憶體使用量: 256kb 時間使用量: 3ms

測試點#a8.in 結果:ac 記憶體使用量: 256kb 時間使用量: 3ms

測試點#a9.in 結果:ac 記憶體使用量: 256kb 時間使用量: 3ms

CODEVS 3044 矩形面積求並

描述 輸入n個矩形,求他們總共占地面積 也就是求一下面積的並 分析 其實上面的部落格講的講的就很清楚了.就相當於把矩形用許多小矩形來代替.這些小矩形都是有一邊或幾條邊延長後過其他矩形的頂點.這麼一說好像更複雜了.換個說法,就是把所有矩形的邊都作為可無限延長的分割線,將所有矩形分割成小矩形.每個小矩形...

codevs3044 矩形面積求並

這幾天入了資料結構的坑,其實簡單的線段樹 樹狀陣列 左偏樹之類的以前就會的,但是不是很會應用,特別是例如優化dp 擴充套件到高維這些應用上就是渣啊,因為之前對離散化不了解,所以看了hwzer的 好久都沒懂,到最後發現原來這個線段樹維護的並不是乙個數軸,只是乙個陣列而已,乙個陣列有被標記的元素,然後用...

矩形面積求並(codevs 3044)

題目描述 description 輸入n個矩形,求他們總共占地面積 也就是求一下面積的並 輸入描述 input description 可能有多組資料,讀到n 0為止 不超過15組 每組資料第一行乙個數n,表示矩形個數 n 100 接下來n行每行4個實數x1,y1,x2,y1 0 x1 x2 100...