hdu 1264 線段樹 掃瞄線

2022-09-24 01:06:10 字數 1164 閱讀 1496

說實話 真是水題 題目給的資料太小 都不用離散化 之前用離散化處理乙個類似的題

這道題是給你幾個矩形 讓你求覆蓋面積 重複的只算一次

做完之後被坑了 題目說輸入左下角和右下角座標 但是 左上角和右下角也有可能 只要是對角就行 所有得線處理一下

#include

#include

#include

#include

using namespace std;

#define ll(x) (x<<1)

#define rr(x) ((x<<1)|1)

struct node

a[2*5000];

int num[110*4];

int min(int a,int b)

int max(int a,int b)

int cmp(node a,node b)

int update(int l,int r,int left,int right,int mark,int k)

else

}else

if(right<=mid)

else if(left>=mid)

else

if(num[ll(mark)]==num[rr(mark)]) num[mark]=num[ll(mark)];

else num[mark]=-1;

}return 0;

}int find(int l,int r,int mark)

dis+=find(l,mid,ll(mark))+find(mid,r,rr(mark));

return dis;

}int main()

i++;

sort(a+1,a+1+i,cmp);

memset(num,0,sizeof(num));

int area=0,a,b;

a=a[1].x1;

b=a[1].x2;

update(0,100,a,b,1,1);

for(int j=2;j<=i;j++)

else

}printf("%d\n",area);

if(x1==-2) break;

} return 0;

}

HDU 1264 (暴力模擬)

題目 思路 直接暴力模擬,資料不大 建乙個100 100的mp陣列 相當於塗格仔 最後求格仔的個數 求面積轉化為求格仔數目 注意一下 變數i的取值,從0初始化 includeusing namespace std define ll long long define maxn 100005 int ...

hdu4007 線段樹掃瞄線

用變長為r的正方形最多能框住幾個點,線段樹,離散化,掃瞄線,延時標記lz include include include include include define n 2005 define inf 1 30 const double eps 1e 12 const double pi acos...

hdu1828線段樹 掃瞄線

矩形求周長類似矩形合併求面積,只是多了需要統計豎邊的個數,對於每次求到的下底邊長還要增加目前底邊與下一條底邊之間的豎邊總長 1,n個矩形有2 n條線段,按從小到大排列,如上圖得到的線段順序 開始掃瞄第一條線段,得到總底邊長sum為a這部分,得到豎邊個數segnum 2,每增加一條底邊segnum 2...