BZOJ1503 NOI2004 鬱悶的出納員

2021-07-25 19:42:42 字數 1066 閱讀 8623

題目鏈結

全部修改代價太大,就記錄每個員工工資變化量delta,新加入時當前員工的工資若》=min,就加入新點,值為工資x-delta。

(立刻離開的都不算入最後的答案,坑爸爸!)

#include 

#include

#include

#include

#include

#include

#include

#include

#define n 100005

#define m 200005

#define inf 1e9+1

using

namespace

std;

typedef

long

long ll;

typedef pairpa;

int read()

while(isdigit(ch))

return x*f;

}int n,delta,rt,cnt,ans,mn;

int son[n][2],fa[n],num[n],sz[n];

void pushup(int p)

void rotate(int x,int &k)

void splay(int x,int &k)

rotate(x,k);

}}void insert(int &k,int x,int last)

if(x0],x,k);

else insert(son[k][1],x,k);

}int find(int k,int x)

int delete(int &k,int last)

else

return rtn;

}void solve()

else

if(ch[0]=='a') delta+=x;

else

if(ch[0]=='s')

else}}

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

}int main()

bzoj1503 NOI2004 鬱悶的出納員

本題依然是一道資料結構題,對本題而言,依然可以用splay來解。本題的乙個難點 對於我這個弱菜而言 是如何動態的改變平衡樹中的值。其實我們可以借鑑線段樹中的lazy tag的思想,因為若要變動則是整棵樹一起變,所以我們可以開設乙個全域性變數delta表示此時對整棵樹的改變值,這樣一來,在每次插入節點...

BZOJ1503 NOI2004 鬱悶的出納員

分析 一段裸的splay,支援upper bound,lower bound,然後和線段樹一樣lazy tag一下 寫得太醜qaq 注 如果加入的員工由於工資小於最低工資立刻離開了公司,此人不計入被炒員工總數 於是本題為我的ac率做出了巨大的貢獻 也可以不lazy tag,這題可以在外面開乙個tag...

bzoj1503 NOI2004 鬱悶的出納員

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