線段樹 平移掃瞄法求矩形面積

2021-08-22 10:24:35 字數 1667 閱讀 3708

t^toj 長方形的並的面積

線段樹維護[ 1 ,  n ]全區間大於0的節點的個數即為矩形的長度,線段之間的寬度即為矩形的寬度

for(int i=1;ihdu1255 覆蓋的面積

矩形面積交

#include#include#includeusing namespace std;

const int max=2*1e3+1e2;

const double eps=1e-10;

struct node

edge[max<<1];

double hash_[max<<1],one[max<<2],two[max<<2];

int mark[max<<2],cnt,n;

inline bool cmp(const node &a,const node &b)

inline int find_(const double &x)

return mid;

}void pushup(int rt,int l,int r)

else if(mark[rt]==1)

else if(mark[rt]>=2)

}void update(int rt,int l,int r,int l,int r,int v)

int mid=(l+r)>>1;

if(l<=mid) update(rt<<1,l,mid,l,r,v);

if(r>mid) update(rt<<1|1,mid+1,r,l,r,v);

pushup(rt,l,r);

}int main()

sort(hash_+1,hash_+n*2+1);

cnt=unique(hash_+1,hash_+n*2+1)-hash_-1;

sort(edge+1,edge+n*2+1,cmp);

for(int i=1;i

printf("%.2f\n",ans);

}return 0;

}

線段樹求矩形面積並 掃瞄線 離散化

顧名思義,掃瞄法就是用一根想象中的線掃過所有矩形,在寫 的過程中,這根線很重要。方向的話,可以左右掃,也可以上下掃。方法是一樣的,這裡我用的是由下向上的掃瞄法。如上圖所示,座標系內有兩個矩形。位置分別由左下角和右上角頂點的座標來給出。上下掃瞄法是對x軸建立線段樹,矩形與y平行的兩條邊是沒有用的,在這...

線段樹求矩形面積並 掃瞄線 離散化

顧名思義,掃瞄法就是用一根想象中的線掃過所有矩形,在寫 的過程中,這根線很重要。方向的話,可以左右掃,也可以上下掃。方法是一樣的,這裡我用的是由下向上的掃瞄法。如上圖所示,座標系內有兩個矩形。位置分別由左下角和右上角頂點的座標來給出。上下掃瞄法是對x軸建立線段樹,矩形與y平行的兩條邊是沒有用的,在這...

線段樹輔助 掃瞄線法計算矩形面積並

分析 2.重點 掃瞄線法 假想有一條掃瞄線,從左往右 從右往左 或者從下往上 從上往下 掃瞄過整個多邊形 或者說畸形。多個矩形疊加後的那個圖形 如果是豎直方向上掃瞄,則是離散化橫座標,如果是水平方向上掃瞄,則是離散化縱座標。下面的分析都是離散化橫座標的,並且從下往上掃瞄的。掃瞄之前還需要做乙個工作,...