平衡樹的題目
題目中的全部減少可以通過維護全域性的減少量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表示此時對整棵樹的改變值,這樣一來,在每次插入節點...