刷題總結 書架(bzoj1861)

2022-05-23 13:42:11 字數 2532 閱讀 7776

小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,...