time limit: 30 sec memory limit: 256 mb
submit: 39 solved: 24
[submit][status][discuss]
自從wc退役以來,大爺是越來越懶惰了。為了幫助他活動筋骨,也是受到了彈飛綿羊一題的啟發,機房的小夥伴們
決定齊心合力構造乙個下面這樣的序列。這個序列共有n項,每項都代表了乙個小夥伴的力量值,如果大爺落到了
第i個小夥伴的手裡,那麼第i個小夥伴會把大爺彈到第i+ai個小夥伴手裡,其中ai就是第i個小夥伴的力量值,也
就是序列的第i項。然而,因為大爺太沉了,所以有些小夥伴不能撐到鍛(you)煉(xi)結束,所以我們中途會替
換一些小夥伴,也就是改變序列的某些項。而且,因為大爺太沉了,所以有些小夥伴不能把大爺扔向前方,而是會
把大爺往反方向扔,也就是序列中的一些項會是負的(當然,也可能是零嘍)。現在機智的大爺通過在空中的觀察
,已經知道小夥伴們的所有活動——即初始序列、所有更改操作,他想請你算一算,如果他在某時刻落到了某個位
置,那麼他會在幾次彈起之後落到小夥伴序列之外(畢竟摔在地上還是蠻疼的)。
第一行為兩個整數n和m,代表序列長度和操作次數。
第二行為n個整數,代表初始的小夥伴序列。
接下來有m行,每行代表乙個操作。
如果這一行的第乙個數是1,代表該操作是乙個詢問操作,接下來乙個數x,代表詢問此時大爺從x處,經過幾次彈
起會摔在地上。如果永遠不會摔在地上,請輸出-1。
如果這一行的第乙個數是2,代表該操作是乙個更改操作,接下來兩個數x,y,代表將序列的第x項改為y。
n,m <= 200000 |ai| < n
對於每次詢問操作,輸出彈起次數或-1。
3 19
1 1 1
1 11 2
1 32 1 2
1 11 2
1 32 3 -1
1 11 2
1 32 2 233
1 11 2
1 32 2 -233
1 11 2
1 3321
221-1
-1-131
2312
by yousiki & guozz
這是基環森林,如果乙個聯通塊沒有換那麼就是普通的lct,如果有環那麼大爺就永遠不需要落地輸出-1...
現在我們斷掉環上的任意一條邊(x,y),然後把這條邊變成虛邊,x就作為這個聯通塊的根節點,那麼x的環父親就是y,然後刪邊的時候判斷刪掉之後xy是否聯通,不聯通就把xy這條虛邊連上...
#include#include#include#include//by neighthornusing namespace std;
const int maxn=200000+5;
int n,m,p[maxn];
struct m
inline void update(void)
inline bool isroot(void)
inline void pushdown(void) }
}tr[maxn];
inline void connect(m *f,m *t,int s)
inline void rotate(m *t)
inline void push(m *t)
inline void splay(m *t) }}
inline void access(m *t)
}inline void makeroot(m *t)
inline void cut(m *t)
inline void link(m *f,m *t)
inline m *find(m *t)
inline void add(m *t,m *f)
inline void change(m *t,m *f) }}
signed main(void)
else
} return 0;
}
by neighthorn
BZOJ4764 彈飛大爺
和彈飛綿羊類似的,那題是維護乙個內向樹,這題是維護若干棵基環內向樹和一棵內向樹 同樣的用lct維護就好了 內向樹可以直接維護,對於基環內向樹,隨便找環上一點x做根,記錄他指向哪個點to x 對於cut操作,不在環上可以直接斷,否則斷了之後要把x和to x 連起來 對於link操作,如果不成環同樣可以...
bzoj4764 彈飛大爺
傳送門 你們搞的這個題目啊,exciting!lct裸題嘛。記得特判一下根節點所連出的邊是否會成環就行了,還有刪邊的時候特判一下是否需要把這條邊加回去。幾天不寫lct,結果一寫就寫出各種腦殘錯誤,我怎麼這麼菜,233 1 include2 include3 include4 define isroo...
BZOJ 4764 彈飛大爺 LCT
思路並不難,主要是細節需要注意一下.在 lct 中,刪邊要寫成 f lson 0,lson 0 因為刪 x y 時 y 不一定是左兒子,y 只是 x 的前驅 然後 f lson lson 0 這個寫法在一些編譯器上是錯誤的 就是你會發現 f lson 中這個 lson 會變成 0 因為那個錯誤 tl...