BZOJ P3295 動態逆序對

2021-08-10 08:56:41 字數 2238 閱讀 4692

bzoj

yzoj

我們可以預處理出每乙個點所包含的逆序對數k(i),刪除的時候把這個值減去就可以了。問題在於之前的操作可能已經把當前要減去的逆序對數包含了。

考慮乙個操作序列。在當前對答案減去k(i)後,只需加上當前點與之前操作刪掉的點存在的逆序對數就好了。

我們知道當前操作為a,滿足操作b在a之前,b所刪除點和a所刪除點滿足逆序對關係就可以對操作a的答案加上1。

於是問題轉化為操作序列上的逆序對問題。不同的是,由於多了時間這一維,這個問題變成了三維偏序問題。

對操作按時間排序,對序列分治,再按序列下標進行歸併,同時在外部維護以點權為關鍵字的權值線段樹查詢滿足條件的逆序對,每次歸併後清空線段樹。

複雜度o(n

×log

2n) ,至於常數嘛qwq…….

HYSBZ3295 動態逆序對

time limit 10 sec memory limit 128 mb submit 5029 solved 1686 submit status discuss 對於序列a,它的逆序對數定義為滿足i aj 的數對 i,j 的個數。給1到n的乙個排列,按照某種順序依次刪除m個元素,你的任務是在每...

bzoj3295 動態逆序對

portal bzoj3295 雖然說這個可能原本是一道愉快的樹套樹但是 看到 按照某個順序依次刪除 這樣的字眼,比較容易聯想到乙個套路 反過來看,變成按照某個順序依次插入 那麼對於乙個詢問,刪掉它之前 化完了之後就是插入它之後 的所會影響到的逆序對數可以分為兩種 一種是在它前面但是比它大的,一種是...

BZOJ3295 動態逆序對

問題描述 對於序列a,它的逆序對數定義為滿足i j,且ai aj的數對 i,j 的個數。給1到n的乙個排列,按照某種順序依次刪除m個元素,你的任務是在每次刪除乙個元素之前統計整個序列的逆序對數。輸入格式 輸入第一行包含兩個整數n和m,即初始元素的個數和刪除的元素個數。以下n行每行包含乙個1到n之間的...