題解 P5217 貧窮

2022-08-12 11:27:13 字數 1048 閱讀 6344

​ 看完題目我們都知道是平衡樹,而且是要資瓷區間操作的平衡樹,並且要能區間翻轉,所以我們被迫選擇自帶三倍大常數的\(splay\),剩下的都是一些平衡樹的基操了。

操作\(1\) :插入,很簡單。該怎麼插就怎麼插

操作\(2\) :刪除,直接刪除。

操作\(3\) :翻轉,將要操作的子樹旋轉出來,然後直接打標記翻轉。

操作\(4\) :開始時將整個序列\(build\)出來,然後用陣列將原序列在平衡樹中的位置記錄下來。平衡樹中的乙個點被刪除後就給那個點打上標記,查詢時直接查對應的位置,如果被刪除後就輸出\(0\),否則先\(dfs\)將路上的標記\(pushdown\)下來,然後再旋轉到根輸出排名即可。

操作\(5\) :第\(k\)小,直接輸出即可。

操作\(6\) :狀壓壓字母,將要操作的子樹旋轉出來,然後直接輸出。

\(1.\)

inline int split(int l,int r)

\(rnk\)就是找第\(k\)個位置。

然後你要插入就

int u=split(pos,pos-1);
刪除就

int u=split(pos,pos);
找區間就

int u=split(l,r);
\(2.\)

為了不使我們\(split\)時越界,我們就在首尾搞兩個字母,然後要把讀入後的位置\(++\)。

然後呢?然後就完了。

上**:

inline int ids(int u) 

inline void connect(int u,int f,int s)

inline void pushup(int u)

}inline int split(int l,int r)

inline void insert(int pos,int val)

int main()

return 0;

}

題解 P2058 海港

我們注意到資料範圍,發現二維陣列並不可取,但是我們又注意到 k i 3 105 ki 3 10 5,所以採取一種新的思想 將所有人都讀在乙個一維陣列裡面 使用乙個佇列 q q 來儲存第 i role presentation i i艘船上人數的範圍,即 q q 儲存的是兩個數 l r role pr...

題解 P4995 跳跳!

說實話這個題我一開始想了好久dfs超時得了30可能因為我太弱了 吃得苦中苦方為人上人現在終於a了當然體會更多 1 首先 這是個真的真的貪心題 貪心思路就是每次都從未跳過得最高的 或最低的 跳到最低處 最高處 這樣差值才最大 2 知道貪心思路了就要寫好 qaq 寫法有很多種,像我這種蒟蒻就只會寫這一種...

題解 P1434 滑雪

題目鏈結 此題運用功能強大的 暴力搜尋 記憶化搜尋才是重點!然而,這是一道經典的dp問題 如果我們用 dis i j 來表示座標為 i,j 時的高度 cnt i j 是我們的記憶化陣列 在合法的前提下,就有狀態轉移方程 dis i j max dis i 1 j dis i j 1 dis i 1 ...