描述輸入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...