首页 > TAG信息列表 > 弹飞

[HNOI2010]弹飞绵羊

考虑这是一个\(LCT\)模板题。 感觉得多做一些题来熟悉\(LCT\)的操作。 这个题考虑对每个点向他往后跳的终点,如果会出界就不连边。 然后考虑\(LCT\)维护,也就是查询该点到原树根的距离。 那就\(access\),\(splay\),然后查询\(x\)的子树大小就行了。 断边的话,因为保证了树结构而且断的

[BZOJ 2002] [HNOI2010]弹飞绵羊(Link Cut Tree)

[BZOJ 2002] [HNOI2010]弹飞绵羊(Link Cut Tree) 题面 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki

bzoj 2002 [Hnoi2010]Bounce 弹飞绵羊 lct

题意:告诉你每个装置的弹飞到哪个装置,问你从某个起点出发可以被弹飞多少次?(可修改) 解:LCT模板(link and cut  and ask (size))   #include<bits/stdc++.h> #define mod 51061 #define en '\n' #define ll unsigned int const int maxn = 2e5 +100; using namespace std; int read

Bounce 弹飞绵羊 --- 分块/LCT/动态树

https://www.lydsy.com/JudgeOnline/problem.php?id=2002 分块( √ ) LCT() 动态树() 一、分块: 分块重要的是确定我们建立的数组要完成什么使命,这题是问从某点弹出序列需要几次,并要提供修改操作。既然分了块,那我们就要把操作缩小到块的范围,需要的是弹出整个序列的次数,我们就缩小到跳出这

弹飞绵羊

弹飞绵阳,洛谷。花了2000ms,o2后1000ms  // luogu-judger-enable-o2 #include<bits/stdc++.h> #define R register int #define I inline void #define lc c[x][0] #define rc c[x][1] using namespace std; const int N=1e6; inline int in() { int s=0; char ch = g

P3203 [HNOI2010]弹飞绵羊

传送门 LCT裸题,设 $k[i]$ 为位置 $i$ 弹簧的弹力系数,那么从 $i$ 往 $i+k[i]$ 连一条边,显然所有边构成了一个森林 直接 LCT 维护森林,询问 $x$ 就把 $x$ 到根的路径连起来 ($access(x)$) ,然后输出 $x$ 的 $splay$ 的节点数就好了 修改也不用那么麻烦,我们 $sccess(x),splay(x)$ 后 $c[

P3203 [HNOI2010]弹飞绵羊

Luogu3203 求两点之间的步数,则考虑设size[x]表示x的子树大小,然后在query(x,y)中size[y]-1就是步数 所以设状态只需要满足在\([x,y]\)这个\(splay\)中是合法的就可以了 #include <cmath> #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using name

弹飞河鼠

今天写这一篇题解完全是因为愤怒。。。 好的,先来看题。 题目描述 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,