P3203 HNOI2010 彈飛綿羊(LCT)

2022-04-30 09:09:08 字數 959 閱讀 1804

p3203 [hnoi2010]彈飛綿羊

lct板子

用乙個$p[i]$陣列維護每個點指向的下個點。

每次修改時cut*1+link*1就解決了

被彈出界時新設乙個點,權為0,作為終點表示出界點。其他點點權為1。

然後統計一下路徑就好辣

注意點的編號從0開始

#includeinline 

void swap(int &a,int &b)

#define n 200005

int n,m,ch[n][2

],fa[n],s[n],rev[n],p[n];

#define lc ch[x][0]

#define rc ch[x][1]inline

bool nrt(int x)

inline

void up(int x)

inline

void rev(int x)

inline

void down(int x)

void pre(int x)

void turn(int

x)inline

void splay(intx)}

inline

void access(int x)

inline

void makert(int

x)inline

int find(int

x)inline

void link(int x,int y)

inline

void cut(int x,int

y)inline

void split(int x,int

y)int

main()

scanf("%d

",&m);

while(m--)

}return0;

}

P3203 HNOI2010 彈飛綿羊

題目大意 有n個裝置,每個裝置設定初始彈力係數ki,當達到第i個裝置時,會往後彈ki步,達到第i ki個裝置,若不存在第i ki個裝置,則被彈飛。求從第i個裝置起步時,被彈幾次後會被彈飛。帶修改操作,下標0開始 分析 開始打算倒著跑一遍記錄每個位置彈飛要多少次,但是發現這樣做修改操作複雜度 為了減少...

P3203 HNOI2010 彈飛綿羊

某天,lostmonkey發明了一種超級彈力裝置,為了在他的綿羊朋友面前顯擺,他邀請小綿羊一起玩個遊戲。遊戲一開始,lostmonkey在地上沿著一條直線擺上n個裝置,每個裝置設定初始彈力係數ki,當綿羊達到第i個裝置時,它會往後彈ki步,達到第i ki個裝置,若不存在第i ki個裝置,則綿羊被彈飛...

P3203 HNOI2010 彈飛綿羊

p3203 hnoi2010 彈飛綿羊 本來以為是個水題,其實還是有思維性的 lct 上操作和模板一樣,顯然我們維護子樹大小 開始是想 link x,x val x 當 x val x n 時就不連,然後查詢 x 時就查詢右子樹大小 反例就不舉了隨手就是個反例吧反正這種辦法是錯的 正解 link x...