POJ1151 Atlantis 矩形切割

2021-07-26 15:32:53 字數 2203 閱讀 8128

給出n個矩形,求這些矩形面積的並。

輸入包含多組測試資料;

每組資料的第一行包含乙個整數n(1<=n<=1000),表示矩形的個數。

接下來n行,每行四個數(不一定是整數)x1,y1,x2,y2 (0<=x1最後一行以0作為檔案的結束。

對於每組測試資料,輸出兩行;

第一行是「test case #k」,k是組數 (開始為1);

第二行為「total explored area: a」,a是所有矩形面積並,保留到小數點後兩位。

最後每組資料結束後輸出一空行。

2 10 10 20 20

15 15 25 25.5

0test case #1

total explored area: 180.00

矩形切割模板題

寫了乙個二維的矩形切割

又用通用維度矩形切割做了一遍,看看就行了 二維

#include

#include

#include

#include

#include

#include

#include

#include

#include

using namespace std;

inline const int get_int()

while(x>='0'&&x<='9')

return n*bj;

}struct square

square(double lx,double ly,double rx,double ry):x1(lx),y1(ly),x2(rx),y2(ry) {}

} ;struct cut_square

bool if_intersect(square a,square b)

void add(double x1,double y1,double x2,double y2)

void del(int

index)

void xway_cut(int

index,double x1,double y1,double x2,double y2)

void yway_cut(int

index,double x1,double y1,double x2,double y2)

};cut_square s;

int n,cnt=0;

double ans;

int main()

s.add(x1,y1,x2,y2);

}for(int i=1; i<=s.sum; i++)ans+=(s.a[i].x2-s.a[i].x1)*(s.a[i].y2-s.a[i].y1);

printf("test case #%d\ntotal explored area: %0.2lf\n\n",cnt,ans);

}return

0;}

通用

#include

#include

#include

#include

#include

#include

#include

#include

#include

using

namespace

std;

inline

const

int get_int()

while(x>='0'&&x<='9')

return num*bj;

}const

int maxn=2;

struct cube ;

struct universal_cut

bool if_intersect(cube a,cube b)

void add(double x[maxn],double y[maxn])

void cut(cube a,cube b,int dimension)

};universal_cut c;

int n,cnt=0;

double bleft[maxn],bright[maxn],ans=0;

int main()

c.add(bleft,bright);

}for(int i=1; i<=c.sum; i++)

return

0;}

離散化 蠻力 POJ 1151 Atlantis

題意 求矩形面積並 分析 本來是要學習掃瞄線的,不過還沒看懂。囧。在看了黑書之後,發現這題資料規模如此小 100個矩形 於是yy出了一種方法 1.首先把x,y座標都進行離散化。2.離散化之後,將整個平面劃分成很多面積不等的小矩形。3.列舉每個大矩形,得到大矩形離散化後的左上角點和右下角點的位置。4....

POJ 1151 Atlantis 離散化 暴力

題目鏈結 資料範圍較小,直接離散後暴力。等等學習一下線段樹的思路。1 include 2 include 3 include 4 include 5 using namespace std 6 define n 101 7 define eps 1e 6 8double xr n xc n yr n...

POJ1151 Atlantis 掃瞄線演算法

給出幾個矩形對角端點座標,求這些矩形整體覆蓋的面積。整個平面被每個矩形的水平邊所在直線 以後簡稱 水平線 分成了幾個部分,而整體覆蓋面積則為每相鄰的兩個水平線間夾的長度 以後簡稱 夾長 以及水平線所對應的乙個或幾個矩形水平邊 以後簡稱 水平線段 在水平線中所佔的長度之積的和。於是我們假設有乙個掃瞄線...