【BZOJ】2002: [Hnoi2010]Bounce 弹飞绵羊(lct)

 http://www.lydsy.com/JudgeOnline/problem.php?id=2002

(BZOJ挂了,还没在BZOJ测,先是在wikioi测过了,,)

囧。在军训时立志要学lct!!!这是一道lct的裸题,只有access操作(10行都没有啊亲。。。缩行大法的话,我就不说了。。)(link操作相当于水过),其实lct很简单。。想想都有点小激动。。。。。。

lct用splay维护的话,一下就写好了。。但是我在写lct的时候,发现了一些我原来splay的老问题,我原来也知道了的,就是将null的ch给赋值了,因为在rot操作里没有特判,所以导致了null的孩子被赋值了,导致我的lct调试了2天T_T

这不科学啊!!(但是想想了还好了,,因为lct在splay的过程中,是有父亲而父亲不一定有这个孩子的,因为lct维护的是森林。。所以在splay里要加特判,即父亲是否有这个孩子

还有个地方卡了我的调试,就是access操作,本来我是没有加ch[1]->f=null的,之前调试的时候以为是这里出问题,但是证明我很蠢。。。。这里一定不能这样搞啊!因为这样就将孩子和父亲断了联系。。。囧。

 

本题有个特性,即已经有序了的,我们可以从后往前看这个数组,想象成森林,某根的孩子就是在原数组的左边(深度比他深,即越后的元素深度越浅,因为lct在找preferred path的时候splay是按深度构图的,那么孩子就是在父亲的左边,而羊是从左往右走的,所以在更新的时候,不能断了左边的联系T_T,就是我之前的那个错误。。。。将孩子的父亲断了。。T_T。)

link-cut tree具体看论文吧,很容易看懂的,真心话。就是用一颗splay维护某个点的路径,即access操作,我相信多做题就行了的

。。找到错误真开心~调试出来了真开心~

有时间在学习完整套lct然后写篇专题。。囧。。最近看的数学真心感觉有点难啊,数论怎么那么hentai啊?公式推来推去就是为了将O(n)变成O(1)么。这东西能在考场上想到吗囧。好吧,我是蒟蒻所以想不到。

 

 

参考论文:杨哲《QTREE解法的一些研究》

 

 


 

 

Description

某天,Lostmonkey发明了一种超级弹力装置,为了在 他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当 绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次 后会被弹飞。为了使得游戏更有趣,Lostmonkey可以修改某个弹力装置的弹力系数,任何时候弹力系数均为正整数。

Input

第 一行包含一个整数n,表示地上有n个装置,装置的编号从0到n-1,接下来一行有n个正整数,依次为那n个装置的初始弹力系数。第三行有一个正整数m,接 下来m行每行至少有两个数i、j,若i=1,你要输出从j出发被弹几次后被弹飞,若i=2则还会再输入一个正整数k,表示第j个弹力装置的系数被修改成 k。对于20%的数据n,m<=10000,对于100%的数据n<=200000,m<=100000

Output

对于每个i=1的情况,你都要输出一个需要的步数,占一行。

Sample Input

4
1 2 1 1
3
1 1
2 1 1
1 1

Sample Output

2
3

HINT

Source

posted @   iwtwiioi  阅读(961)  评论(1编辑  收藏  举报
编辑推荐:
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· .NET Core 托管堆内存泄露/CPU异常的常见思路
· PostgreSQL 和 SQL Server 在统计信息维护中的关键差异
阅读排行:
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· DeepSeek “源神”启动!「GitHub 热点速览」
· 我与微信审核的“相爱相杀”看个人小程序副业
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库
· 上周热点回顾(2.17-2.23)
点击右上角即可分享
微信分享提示