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