線段樹 資料結構 四校聯考1024T3

2021-08-29 20:45:29 字數 1318 閱讀 8710

沒過是因為沒看。。。

這題其實相當水。。。

重新定義一下逆序對:每個點的貢獻為,其後面的,比它小的數的個數。

然後這樣一來,每次排過序之後的點,其後面就不可能有比它小的值了,直接忽略以後排序又排到它的情況。

#include

#include

#include

#include

#define sf scanf

#define pf printf

#define maxn 200010

#define inf 0x3fffffff

using

namespace std;

typedef

long

long ll;

int n,m;

int a[maxn]

;ll f[maxn]

,ans;

ll tr[maxn*4]

;void

build

(int l=1,

int r=n,

int id=1)

build

(l,mid,id<<1)

;build

(mid+

1,r,id<<1|

1); tr[id]

=min

(tr[id<<1]

,tr[id<<1|

1]);

}ll tree[maxn]

;ll find

(int x)

return res;

}void

add(

int x)

}int

find

(int l1,

int r1,

int val,

int l=1,

int r=n,

int id=1)

int res=-1

;int mid=

(l+r)

>>1;

if(l1<=mid)

if(r1>mid)

return res;

}int

main()

build()

;pf("%lld "

,ans)

;int t;

for(

int i=

1;i<=m;i++)pf

("%lld "

,ans);}

}

資料結構 線段樹 2018國慶三校聯考D5T3

有乙個顯然的暴力方法 對每個詢問,從左往右做一次,記錄字首和,當某個位置字首和為負後,則刪去當前點。再從右往左做一次。考慮使這個過程變得高效 可以將詢問按左端點從右往左排序,然後用棧依次處理每個在從左往右考慮時是否需要刪除。再利用線段樹,求出沒有刪除的部分的最小字尾和,其相反數 和0取min 即為從...

資料結構 線段樹

啦啦啦啦啦啦線段樹是個好東西 好吧並沒有什麼好的 但貌似還是很好啊 線段樹就是一棵樹!顧名思義 又是這個詞 就是求關於一段的某些什麼什麼東西。比如區間最大值啊什麼的。引用百科知識 線段樹是一種二叉搜尋樹,與區間樹相似,它將乙個區間劃分成一些單元區間,每個單元區間對應線段樹中的乙個葉結點。對於線段樹中...

資料結構 線段樹

一 目標 1.如何快速的查詢出下列陣列arr 2,5 的和 2。以及更新arr 4 為6。用普通的方法查詢的複雜度為o n 更新的複雜度為o 1 這時候我們可以用線段樹來快速完成這些操作,複雜度為logn。二 內容 如何建立,查詢,更新線段樹。public class qurqpd int tree...