Problem
Bounce 弹飞绵羊
Description
某天,发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,在地上沿着一条直线摆上个装置,每个装置设定初始弹力系数,当绵羊达到第个装置时,它会往后弹步,达到第个装置,若不存在第个装置,则绵羊被弹飞。绵羊想知道当它从第个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,可以修改某个弹力装置的弹力系数,任何时候弹力系数均为正整数。
Input
第一行包含一个整数,表示地上有个装置,装置的编号从到,接下来一行有个正整数,依次为那个装置的初始弹力系数。第三行有一个正整数,接下来行每行至少有两个数、,若,你要输出从出发被弹几次后被弹飞,若则还会再输入一个正整数,表示第个弹力装置的系数被修改成。
Output
Sample Input
1 | 4 |
Sample Output
1 | 2 |
Hint
对于的数据;
对于的数据,
标签:LCT
分块
Solution
本题其实应该是的基础题,但是因为我身为蒟蒻写不来,就用分块做了。
把原数列分为个块,对于每个块,维护块内的每个位置需要多少步才能跳到块外,以及跳到块外后的位置,对于修改操作,重算那个块内的所有位置的两个值,这样单次询问或修改复杂度,总复杂度。可过。
Code
1 |
|