CODEVS 3044 矩形面積求並

2021-06-28 18:47:56 字數 1242 閱讀 7661

描述

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

分析

其實上面的部落格講的講的就很清楚了.

就相當於把矩形用許多小矩形來代替. 這些小矩形都是有一邊或幾條邊延長後過其他矩形的頂點. 這麼一說好像更複雜了. 換個說法, 就是把所有矩形的邊都作為可無限延長的分割線, 將所有矩形分割成小矩形. 每個小矩形作為乙個新的點, 然後在bool陣列裡記錄哪個點被覆蓋, 可以通過預處理或者臨時計算出小矩形的面積. 最後掃一遍統計結果.

**

49ms 256kb

#include 

#include

#include

using

namespace

std;

const

int maxn = 100 + 10;

struct matrix matrixs[maxn];

double x[maxn<<1], y[maxn<<1];

bool covered[maxn<<1][maxn<<1];

int main() ;

x[i<<1] = x1;

y[i<<1] = y1;

x[(i<<1) ^ 1] = x2;

y[(i<<1) ^ 1] = y2;

}sort(x, x + 2*n);

sort(y, y + 2*n);

// 以左下點的座標作為格仔的編號.

memset(covered, 0, sizeof(covered));

for(int cur = 0; cur < n; cur++)

double ans = 0.00;

for(int i = 0; i < 2*n - 1; i++)

for(int j = 0; j < 2*n - 1; j++)

if(covered[i][j]) ans += (x[i + 1]-x[i]) * (y[j + 1]-y[j]);

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

}return

0;}

主頁

CodeVS3044矩形面積求並

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

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