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