SBT模板 鬱悶的出納員 By Kuangbin

2021-06-20 03:33:03 字數 2168 閱讀 2060

拿來當模板,bin哥別生氣哈==

人一我百,人十我萬!追逐青春的夢想,懷著自信的心,永不放棄~~~~~~~  by kuangbin

鬱悶的出納員

time limit:5000msmemory limit:65536kb64bit io format:%lld & %llu

submit

status

system crawler  (2013-04-07)

description

oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣除乙個相同的量。我真不知道除了調工資他還做什麼其它事情。 工資的頻繁調整很讓員工反感,尤其是集體扣除工資的時候,一旦某位員工發現自己的工資已經低於了合同規定的工資下界,他就會立刻氣憤地離開公司,並且再也不會回來了。每位員工的工資下界都是統一規定的。每當乙個人離開公司,我就要從電腦中把他的工資檔案刪去,同樣,每當公司招聘了一位新員工,我就得為他新建乙個工資檔案。 老闆經常到我這邊來詢問工資情況,他並不問具體某位員工的工資情況,而是問現在工資第k多的員工拿多少工資。每當這時,我就不得不對數萬個員工進行一次漫長的排序,然後告訴他答案。 好了,現在你已經對我的工作了解不少了。正如你猜的那樣,我想請你編乙個工資統計程式。怎麼樣,不是很困難吧?

input

output

輸出檔案的行數為f命令的條數加一。 對於每條f命令,你的程式要輸出一行,僅包含乙個整數,為當前工資第k多的員工所拿的工資數,如果k大於目前員工的數目,則輸出-1。 輸出檔案的最後一行包含乙個整數,為離開公司的員工的總數。

sample input

9 10

i 60

i 70

s 50

f 2i 30

s 15

a 5f 1

f 2

sample output

10

20-1

2

hint

i命令的條數不超過100000

a命令和s命令的總條數不超過100

f命令的條數不超過100000

每次工資調整的調整量不超過1000

新員工的工資不超過100000

開乙個變數記錄變化就可以了,就是簡單sbt模板題;

一種**是逐漸刪除最小的,一種是查整個子樹,一起刪除。

反而前面的速度更快。。。

#include #include #include #include using namespace std;

const int maxn=100010;

struct sbt

}tree[maxn];

int tot,root;

void left_rotate(int &x)

void right_rotate(int &x)

void maintain(int &x,int flag)

else

maintain(tree[x].left,0);

maintain(tree[x].right,1);

maintain(x,0);

maintain(x,1);

}void insert(int &x,int key)

else

}int get_kth(int &x,int k)

int get_min(int r)

int deletemin()

while(tree[tree[temp].left].left)

tree[temp].size--;

int ret=tree[tree[temp].left].key;

tree[temp].left=tree[tree[temp].left].right;

return ret;

}int main()

}else if(op[0]=='a')

else if(op[0]=='s')}}

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

}return 0;

}

NOI2004 鬱悶的出納員 SBT

by cxlove splay tree寫了4 5個小時,debug不能,只有跪舔啊。改用sbt,還是sb tree好用。把乙個變數用作類似線段樹中的延遲標記,不需要在每次加或者減的時候進行全部更新。在後來插入的結點中,應該當之前的延遲算進去,如果初始就小於下限的不新增,而且也不算作最後離開的人數。...

鬱悶的出納員

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

鬱悶的出納員 題解(Splay)

題面 用delta記錄對工資的加減,那麼新增節點時點權應 delta,輸出時 delta 幾種操作中減少工資較麻煩 1.delta val 2.刪點 求前驅轉到根,刪除左子樹 這裡的刪除不用乙個乙個暴力刪,直接斷掉子樹關係即可 至於求k大 我比較懶直接改成求size k 1小 逃 include i...