李超線段樹

2022-06-01 08:45:11 字數 974 閱讀 2991

t4正解李超線段樹?不會,滾過來學

貌似思路並不是很難的亞子

我們可以使用權值線段樹!

對於每個區間,我們維護乙個最優線段

顯然對於乙個線段完全覆蓋的區間我們才處理

分四種情況討論:

直接賦值

直接賦值

直接滾粗

最複雜的情況,我們考慮將覆蓋該區間最長的線段保留為最優線段

欸嘿?怎麼搞呢?其實只需判斷該區間中點誰在上面就行了,中點位置在上面的線段一定是覆蓋最長的線段

然後把另外一條丟到下面去接著修改

插入時間複雜度\(o(\log^2 n)\)

一直往下走,對於每個走到的區間的最優線段求出乙個函式值,取\(\texttt\)即可

詢問時間複雜度\(o(\log n)\)

loj板題「雅禮集訓 2017 day2」線段遊戲

「雅禮集訓 2017 day2」線段遊戲

const int m = 1000001;

const int maxn = 2000005;

int n,q;

struct line

line(double k1,double b1,bool f1)

};#define lc (x<<1)

#define rc (x<<1|1)

double getf(line w,int x)

struct lichaosegmenttree

return;

} if(ql <= mid) add(lc,l,mid,ql,qr,w);

if(mid+1 <= qr) add(rc,mid+1,r,ql,qr,w); }

double query(int x,int l,int r,int q)

}st;

void addline()

int main()

} return 0;

}

李超線段樹

首先來看一道題 heoi2013 segment 可以發現的是,實質上某個 x k 處的最大值只有乙個,因此我們需要盡可能減少計算不優的線段。那麼對於兩條線段 a,b a ne b 它們左右端點橫座標相同,就只會產生如下四種情況 從特殊情況出發,每次我們都插入一條 1,n 的線段。如果是前兩條情況,...

李超線段樹

可以處理二維平面上加入線段,然後查詢單點最大值。首先我們定義乙個區間的最優勢線段,為區間中點值最大的線段,然後我們發現處理詢問,我們只需要將經過的線段樹節點上的最優勢線段對應的點值取max即可。然後考慮如何處理修改,首先將線段劃分到 o logn 個線段樹節點上。如果當前線段被最優勢線段完全覆蓋,那...

Segment 李超線段樹

要求在平面直角座標系下維護兩個操作 1.在平面上加入一條線段。記第 i 條被插入的線段的標號為 i 2.給定乙個數 k,詢問與直線 x k 相交的線段中,交點最靠上的線段的編號。若有多條線段符合要求,輸出編號最小的線段的編號 明顯的線段樹特徵 1.有固定的 區間長度,39989 2.插入元素支援合併...