鬱悶的出納員
思路:設工資下限為ko,然後ko--(因為要小於工資下限);
設cur為記錄工資增長,降低;
設第i個人的工資為pos;
對應的四種操作:
插入:cur-pos-ko;
增長:cur-=pos;
降低:cur+=pos;
每個降低操作都要進行一次刪除節點;
把小於等於cur的節點全部刪掉;
排名:輸出rank()-cur+ko;
splay支援以上全部操作;
還有一點,如果一開始這個人的工資小於ko,則不算在離去的人裡;
來,上**:
#include #include#include
#include
using
namespace
std;
#define maxn 1000005
struct
treenodetype
void create(int
x)
};struct treenodetype tree[maxn<<1
];int
n,ko,root,tot,cur,ans,tot_;
inline
void
in(int &now)
}inline
int getson(int
now)
inline
void updata(int
now)
inline
void rotate(int
now)
void splay(int
now)
root=now;
}void insert(int
x) opi=now,now=tree[now].ch[x>tree[now].key];
if(!now)}}
}void
del()
}int rank(int
x) }
if(x<=tree[now].w)
else
}}int
main()
}printf(
"%d\n
",ans);
return0;
}
鬱悶的出納員
這題坑死我了。oier公司是一家大型專業化軟體公司,有著數以萬計的員工。作為一名出納員,我的任務之一便是統計每位員工的工資。這本來是乙份不錯的工作,但是令人鬱悶的是,我們的老闆反覆無常,經常調整員工的工資。如果他心情好,就可能把每位員工的工資加上乙個相同的量。反之,如果心情不好,就可能把他們的工資扣...
鬱悶的出納員 題解(Splay)
題面 用delta記錄對工資的加減,那麼新增節點時點權應 delta,輸出時 delta 幾種操作中減少工資較麻煩 1.delta val 2.刪點 求前驅轉到根,刪除左子樹 這裡的刪除不用乙個乙個暴力刪,直接斷掉子樹關係即可 至於求k大 我比較懶直接改成求size k 1小 逃 include i...
SBT模板 鬱悶的出納員 By Kuangbin
拿來當模板,bin哥別生氣哈 人一我百,人十我萬!追逐青春的夢想,懷著自信的心,永不放棄 by kuangbin 鬱悶的出納員 time limit 5000msmemory limit 65536kb64bit io format lld llu submit status system craw...