題意:
在平面上給若干矩形,求它們的周長並。
分析: 用區間樹維護x軸上區間的一些覆蓋屬性。區間樹維護的是一些區間的性質,構造為build(l,mid),build(mid,r),線段樹維護的是一些點的性質,構造為build(l,mid),build(mid+1,r)。區間樹經常被視為線段樹,但個人認為因為點線有所區分,故考慮問題時還是把他們區別對待比較好,雖然它們的核心思想如lazy是一樣的。
**://poj 1177
//sep9
#include #include using namespace std;
const int maxn=10012;
int n;
struct line
line[maxn];
struct node
segtree[maxn*4];
int x[maxn];
bool cmp(line a,line b)
if(segtree[i].l+1==segtree[i].r)else
}void update(int i,line e)
if(e.x2<=segtree[i*2].rf) update(i*2,e);
else if(e.x1>=segtree[i*2+1].lf) update(i*2+1,e);
else
pushup(i);
}int main()
{ scanf("%d",&n);
int t=0;
for(int i=0;i
POJ 1177 矩形周長並
參考部落格 方法 把矩形分成橫線和豎線去處理,可知是完全相同的操作,我們來講下怎麼算出橫線部分,豎線部分就是照搬即可。將橫線儲存在乙個表中,按橫線所處的豎直位置排序 公升序 另外每條橫線帶乙個標記值,原矩形的下線為1,上線為 1 對應過去就是插入線段和刪除線段 從低到高掃瞄橫線,沒掃到一條橫線就能計...
Poj1177 求矩形並的輪廓周長
題意 給出多個矩形,求這些矩形所覆蓋圖形的周長。可用線段樹來做,兩種方法 1 分別對x和y方向離散化後做線段樹,求出各方向上的輪廓長 2 對乙個方向上的座標進行離散化,用另一維進行掃瞄 1 覆蓋的線段長度 2 不相邊的線段數 3 該節點表示的區間兩端點是否被覆蓋 用於合併線段 code includ...
POJ 2104 區間第k大 主席樹(模板)
查詢區間範圍內,第 k kk 大的數 按照數列順序依次加入,構建可持久化線段樹 主席樹 由於線段樹的可減性,能夠得到對應區間範圍內的線段樹 主席樹的模板題了 int cnt,root maxn a maxn struct nodet maxn 40 vector int v intgetid int...