小t有乙個很大的書櫃。這個書櫃的構造有些獨特,即書櫃裡的書是從上至下堆放成一列。她用1到n的正整數給每本書都編了號。 小t在看書的時候,每次取出一本書,看完後放回書櫃然後再拿下一本。由於這些書太有吸引力了,所以她看完後常常會忘記原來是放在書櫃的什麼位置。不過小t的記憶力是非常好的,所以每次放書的時候至少能夠將那本書放在拿出來時的位置附近,比如說她拿的時候這本書上面有x本書,那麼放回去時這本書上面就只可能有x-1、x或x+1本書。 當然也有特殊情況,比如在看書的時候突然**響了或者有朋友來訪。這時候粗心的小t會隨手把書放在書櫃裡所有書的最上面或者最下面,然後轉身離開。 久而久之,小t的書櫃裡的書的順序就會越來越亂,找到特定的編號的書就變得越來越困難。於是她想請你幫她編寫乙個圖書管理程式,處理她看書時的一些操作,以及回答她的兩個提問:(1)編號為x的書在書櫃的什麼位置;(2)從上到下第i本書的編號是多少。
第一行有兩個數n,m,分別表示書的個數以及命令的條數;第二行為n個正整數:第i個數表示初始時從上至下第i個位置放置的書的編號;第三行到m+2行,每行一條命令。命令有5種形式: 1. top s——表示把編號為s的書房在最上面。 2. bottom s——表示把編號為s的書房在最下面。 3. insert s t——t∈,若編號為s的書上面有x本書,則這條命令表示把這本書放回去後它的上面有x+t本書; 4. ask s——詢問編號為s的書的上面目前有多少本書。 5. query s——詢問從上面數起的第s本書的編號。
對於每一條ask或query語句你應該輸出一行,乙個數,代表詢問的答案。
10 10
1 3 2 7 5 8 10 4 9 6
query 3
top 5
ask 6
bottom 3
ask 3
top 6
insert 4 -1
query 5
query 2
ask 2 29
975 3資料範圍
100%的資料,n,m < = 80000
一道卡了我幾乎乙個上午的splay的模板題····
md表示insert操作腦殘了·····又是刪點又是加點的···導致直接t····
最後發現直接交換兩者的pos和val就可以了···我tm·······
#include#include#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
const
int n=1e5+5
;int father[n],son[n][2
],val[n],size[n],root,tot,pos[n];
intn,m,a,b;
char s[5
];inline
intr()
inline
void clear(int
now)
inline
void update(int
now)
}inline
intget(int
now)
inline
void rotate(int
now)
inline
void splay(int now,int
to)
if(!to) root=now;
}inline
void build(int
x) last=now;
now=son[now][1
]; }
}inline
int find(int x) //
找到第x本的編號
x-=temp;now=son[now][1
]; }
}}inline
intpre()
inline
intnext()
inline
void delete(int x) //
找到編號為x的書將其刪除
if(!son[root][1])
else
}inline
void findtop()//
找到最上面的書並將其旋轉至根節點
inline
void
findbot()
inline
void inserttop(int x) //
把x放在書的最上面
inline
void insertbot(int x) //
把x放在書的最下面
intmain()
if(s[0]=='
b')
if(s[0]=='i'
)
}if(s[0]=='a'
)
if(s[0]=='q'
) a=r(),cout}
return0;
}
BZOJ1861 ZJOI2006 書架 題解
題面複製於洛谷 小t有乙個很大的書櫃。這個書櫃的構造有些獨特,即書櫃裡的書是從上至下堆放成一列。她用1到n的正整數給每本書都編了號。小t在看書的時候,每次取出一本書,看完後放回書櫃然後再拿下一本。由於這些書太有吸引力了,所以她看完後常常會忘記原來是放在書櫃的什麼位置。不過小t的記憶力是非常好的,所以...
刷題總結 作詩(bzoj2821)
神犇sjy虐完heoi之後給傻 lyd出了一題 shy是t國的公主,平時的一大愛好是作詩。由於時間緊迫,shy作完詩 些漢字構成詩。因為shy喜歡對偶,所以shy規定最後選出的每個漢字都必須在 l,r 裡出現了正偶數次。而且shy認 為選出的漢字的種類數 兩個一樣的漢字稱為同一種 越多越好 為了拿到...
刷題總結 天使玩偶(bzoj2716)
學了cdq後近期最後一道題 然而tm還是搞了1個半小時才tm搞出來 先說思路 對於絕對值,我們採取類似於旋轉整個圖的方法,也就是說共計三次翻轉再加上原來的圖,每次旋轉90度,算出點在旋轉後的對應座標 具體看 中的注釋部分 然後對於乙個詢問,每次只算它左上角的點的貢獻,這樣就有乙個三維偏序 時間,x,...