NOI2004鬱悶的出納員bzoj3503

2021-07-04 18:47:21 字數 696 閱讀 9811

題目大意是給出一些操作,支援刪除插入查詢一些值,就是動態維護一些值。

分析:不想寫splay感覺有點難寫雖然聽wqs說splay好處多多,所以同treap來了一發,刪除的時候發現當前節點不行就直接刪除左子樹全部就行啦,沒有單點刪除感覺還是萌萌噠很快就能寫出來噠,樹內放的是與基準值delta的差值哦

惡補資料結構第一站treap。

#include#include#include#include#define n 100005

using namespace std;

int ra[n],ls[n],rs[n],root,siz[n],key[n];

int n,m,delta,ans,len;

void push(int k)

void rturn(int &k)

void lturn(int &k)

void ins(int &k,int val)

siz[k]++;

if (valra[ls[k]]) rturn(k);

}else

}int del(int &k,int x)

else

}int findd(int k,int x)

if (op[0]=='f')

}printf("%d\n",ans);

return 0;

}

noi 2004 鬱悶的出納員

原題位址 花了一兩天真正的熟悉了treap,對於乙個東西,本蒟蒻認為,不應該要會,還應會熟練的寫,像哈狗寫這個只需十分鐘 好吧,話歸正題 先推薦另類解法 戳進去 此題解法很多bit 權值線段樹 各種平衡樹 準備抽空寫 是一道很棒的模板題。這道題我們把每次全體加的工資和減的弄到乙個變數,姑且叫為w,把...

NOI2004 鬱悶的出納員

大致題意就是對初始為空的數列的各種操作233 題解 splay啦 其中可能會遇到的幾個問題 1.如何刪去低於min的點 找到數列中min的後繼提為根,把根的左孩子丟 shan 了就完成了 很容易yy到的對吧 2.如何處理對當前數列中的數進行 k 開個全域性變數存整體的波動 值ff。那麼刪點的時候就把...

NOI2004 鬱悶的出納員

點此看題 這道題很新的一點就是加工資和減工資,這貌似要用到區間修改。但是細細想想,操作的物件是全樹,我們可以維護乙個累積的修改值,新加入乙個點的話要刪去之前的累計的修改值,對於減工資的情況,判斷有沒有低於最低的限制。注意如果乙個一來人就低於最低線,那麼這個人不被統計在最後的刪除人數中。include...