NOI2004 鬱悶的出納員

2021-09-30 01:56:40 字數 1311 閱讀 1436

點此看題

這道題很新的一點就是加工資和減工資,這貌似要用到區間修改。

但是細細想想,操作的物件是全樹,我們可以維護乙個累積的修改值,新加入乙個點的話要刪去之前的累計的修改值,對於減工資的情況,判斷有沒有低於最低的限制。

注意如果乙個一來人就低於最低線,那麼這個人不被統計在最後的刪除人數中。

#include

#include

#include

#include

using

namespace std;

const

int maxn =

80005

;int

read()

int n,m,ans,now,all,rt,index;

int ch[maxn][2

],cnt[maxn]

,siz[maxn]

,val[maxn]

,hp[maxn]

;void

push_up

(int x)

void

rotate

(int

&x,int d)

void

ins(

int&x,

int v)

if(v==val[x]

)int d=v>val[x]

;ins

(ch[x]

[d],v);if

(hp[x]

[d]]

)rotate

(x,d^1)

;push_up

(x);

}void

del(

int&x,

int v)

else

if(ch[x][0

]&&!ch[x][1

])elseif(

!ch[x][0

]&& ch[x][1

])else

}push_up

(x);

}int

ask(

int x,

int v)

signed

main()

if(c==

'a')

now+

=x;if

(c==

's')}if

(c==

'f')

printf

("%d\n",-

ask(rt,x)

+now);}

}printf

("%d\n"

,ans)

;}

noi 2004 鬱悶的出納員

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

NOI2004 鬱悶的出納員

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

NOI 2004 鬱悶的出納員

oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的量...