P1486 NOI2004 鬱悶的出納員

2022-05-01 20:48:10 字數 729 閱讀 3629

平衡樹的題目

題目中的全部減少可以通過維護全域性的減少量s(不過我使用了打tag的方式),然後每次插入的時候插入\(v_i-s\),刪除的時候直接在平衡樹上二分移除對應的子樹即可

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

int nodecnt=0,root,n,lim;

struct nodetreap[100100*2];

queueq;

void throwin(int x)

int getnew(int val)

void pushup(int o)

void pushdown(int o)

}void roratel(int &o)

void rorater(int &o)

void insert(int val,int &o)

pushdown(o);

treap[o].sz++;

if(valtreap[o].val)

}int query(int val,int o)

int main()

insert(k,root);

}else if(c=='a')

else if(c=='s')

else

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

return 0;

}

P1486 NOI2004 鬱悶的出納員

題目鏈結 這道題需要動態插入,刪除,求排名,看到這就想到了平衡樹。由於本人只會splay,所以就用splay來做這道題,這道題插入和刪除都是模板,但是題中還有乙個比價坑的地方就是工資的調整。但我做不到在平衡樹上修改點權。如果每乙個都去插入和刪除的複雜度顯然非常高。看了題解發現,可以維護乙個變數來記錄...

NOI2004, 洛谷P1486 鬱悶的出納員

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

bzoj1503 NOI2004 鬱悶的出納員

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