沒過是因為沒看。。。
這題其實相當水。。。
重新定義一下逆序對:每個點的貢獻為,其後面的,比它小的數的個數。
然後這樣一來,每次排過序之後的點,其後面就不可能有比它小的值了,直接忽略以後排序又排到它的情況。
#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...