題目:
給定平面上若干矩形,求出被這些矩形覆蓋過至少兩次的區域的面積.
input
輸入資料的第一行是乙個正整數t(1<=t<=100),代表測試資料的數量.每個測試資料的第一行是乙個正整數n(1<=n<=1000),代表矩形的數量,然後是n行資料,每一行包含四個浮點數,代表平面上的乙個矩形的左上角座標和右下角座標,矩形的上下邊和x軸平行,左右邊和y軸平行.座標的範圍從0到100000.
注意:本題的輸入資料較多,推薦使用scanf讀入資料.
output
對於每組測試資料,請計算出被這些矩形覆蓋過至少兩次的區域的面積.結果保留兩位小數.
sample input
2
51 1 4 2
1 3 3 7
2 1.5 5 4.5
3.5 1.25 7.5 4
6 3 10 7
30 0 1 1
1 0 2 1
2 0 3 1
sample output
7.63
0.00
之前做了掃瞄線的入門題,二者沒有很大差別,只是在求和的時候需要注意咱們找的是重複出現次數超過兩次及以上的
ac**:
#include#include#include#include#define maxn 1005
using namespace std;
struct edgee[maxn<<1];
bool cmp(edge a,edge b)
void build(int l,int r,int cur)
void updata(int l,int r,int cur,int xx)
int mid=(q[cur].l+q[cur].r)>>1;
if(r<=mid) updata(l,r,cur<<1,xx);
else if(l>mid) updata(l,r,cur<<1|1,xx);
else
pushup(cur);
}int main()
sort(e,e+tot,cmp);
sort(x,x+tot);
int k=1;
for(int i=1;i
build(0,k-1,1);
double ans=0.0;
for(int i=0;i
printf("%.2f\n",ans);
} return 0;
}
hdu 1255 覆蓋的面積
與poj1151略有不同 由於是大於等於2 的有效 所以應該更新到點 include include include include include include include include include includeusing namespace std define inf 0x3f3...
HDU 1255 覆蓋的面積
題目鏈結點這裡 這道題,很久以前做過,當時寫了個暴力,居然過了,然後一直想寫下線段樹的,結果一直被各種事搞得忘了。現在終於填坑了。include include include includeusing namespace std define mem x,y memset x,y,sizeof x...
HDU 1255 覆蓋的面積
problem description 給定平面上若干矩形,求出被這些矩形覆蓋過至少兩次的區域的面積.輸入資料的第一行是乙個正整數t 1 t 100 代表測試資料的數量.每個測試資料的第一行是乙個正整數n 1 n 1000 代表矩形的數量,然後是n行資料,每一行包含四個浮點數,代表平面上的乙個矩形的...