BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 LCT

博客园主题eXtremelySimple极简 博客园主题-eXtremely Simple(极简) 立即下载

Time Limit: 10 Sec Memory Limit: 259 MB
Submit: 11244 Solved: 5719

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


裸LCT,如果可以跳到一个点,那就认爸爸


#include<cstdio>
#include<iostream>
#include<algorithm>
using namespace std;
const int MAXN=200000+10;
struct Tree{
    int ch[2],size,fa;
}tree[MAXN];
int n,m,temp,kk,opt;
void pushup(int x){
    tree[x].size=1;
    if(tree[x].ch[0]) tree[x].size+=tree[tree[x].ch[0]].size;
    if(tree[x].ch[1]) tree[x].size+=tree[tree[x].ch[1]].size; 
} 
bool isroot(int x){
    return tree[tree[x].fa].ch[0]!=x&&tree[tree[x].fa].ch[1]!=x;
}
void rotate(int x){
    int y=tree[x].fa,z=tree[y].fa,l,r;
    if(tree[y].ch[0]==x)l=0;else l=1;r=l^1;
    if(!isroot(y)){
        if(tree[z].ch[0]==y)tree[z].ch[0]=x;
        else                tree[z].ch[1]=x;
    }
    tree[x].fa=z;tree[tree[x].ch[r]].fa=y;tree[y].fa=x;
    tree[y].ch[l]=tree[x].ch[r];tree[x].ch[r]=y;
    pushup(y);pushup(x);
}
void splay(int x){
    while(!isroot(x)){
        int y=tree[x].fa,z=tree[y].fa;
        if(!isroot(y)){
            if(tree[y].ch[0]==x^tree[z].ch[0]==y)rotate(x);
            else                                 rotate(y);
        }
        rotate(x);
    }
}
void access(int x){for(register int i=0;x;i=x,x=tree[x].fa){splay(x);tree[x].ch[1]=i;pushup(x);}}
void link(int u,int v){
    if(v>n)v=0;
    access(u);
    splay(u);
    tree[tree[u].ch[0]].fa=0;
    tree[u].ch[0]=0;
    tree[u].fa=v;
    pushup(u);
}
int main(){
    scanf("%d",&n);
    for(register int i=1;i<=n;i++){
        tree[i].size = 1;
        tree[i].fa=tree[i].ch[0]=tree[i].ch[1]=0;
        scanf("%d",&temp);
        link(i,i+temp);
    }
    tree[0].size=0;
    scanf("%d",&m);
    for(register int i=1;i<=m;i++){
        scanf("%d",&opt);
        if(opt==1){
            scanf("%d",&temp);
            temp++;
            access(temp);splay(temp);
            printf("%d\n",tree[tree[temp].ch[0]].size+1);
        }else{
            scanf("%d",&temp);temp++;scanf("%d",&kk);
            link(temp,temp+kk);
        }
    }
    return 0;
}
cnblog-theme-simpcode:一款简单干净的博客园主题 cnblog-theme-simpcode 一款简单干净的博客园主题,示例博客: 一、准备 在开始之前,必须要确保你已经申请了博客园 JS 权限,具体申请过程就不详细介绍了,读者自行网上搜索,很简单的。 本皮肤如果经常逛博客的读者应该很熟悉,很多博主都在使用。最原始的皮肤主人也无从考证了。这个皮肤是博主自己整理调整出来的,并添加了一些易用的功能例如目录,代码高亮等。 二、开始 博客皮肤默认选择SimpleMermory 三、页面定制CSS代码 page.css,将里面的内容 Copy 到 页面定制css代码 框中,同时将选项禁用模板默认CSS勾上。 如果需要修改博客上面的那个头像,可定位到如下css 代码进行修改: #header::before { background-image: url(//images.cnblogs.com/cnblogs_com/noobgod/130 立即下载

相关推荐

用Matlab和CVX搞定原子范数最小化:一个信号处理小白的避坑实践

本文详细介绍了如何使用Matlab和CVX实现原子范数最小化(Atomic norm minimization),特别适合信号处理初学者。从CVX安装配置、核心代码解析到实战中的典型问题与解决方案,提供了全面的避坑指南。通过具体案例展示了原子范数在频率估计和DOA估计中的优势,并给出性能优化策略和可视化方法。

weixin_28731231的博客 232

BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 (动态树LCT)

2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 2843  Solved: 1519[Submit][Status] Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地...

weixin_34417183的博客 309

【汽车故障诊断2】从标准到实战:解码DTC格式背后的诊断逻辑

本文深入解析汽车诊断故障码(DTC)的格式与逻辑,对比了OBD-II标准(如ISO 15031-6)的5字符格式与UDS协议(ISO 14229-1)下更丰富的3字节格式。文章从国际标准出发,结合实战案例,阐述了DTC如何作为汽车电子系统的“体检报告”,帮助工程师和维修技师精准定位故障,并详细解读了UDS 19服务如何读取和管理DTC状态。

berry的博客 713

【HNOI 2010】Bounce 弹飞绵羊 分块

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

Qantun_Mechanics的博客 1722

2025年春科研论文写作指导(如何写好科研论文)研究生网课期末考试

希望能帮助到大家

beijieweiyu的博客 5789

C#实现不占用串口的串口监听与侦听技术:高效监控串口数据的最佳实践

本文详细介绍了如何实现不占用串口的串口监听与侦听技术,解决了传统串口监听可能带来的串口占用问题。通过使用虚拟串口、外部监听工具或第三方库,我们可以高效地实现串口数据的捕获与处理,适用于各种工业控制、物联网和嵌入式开发的应用场景。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1673

BZOJ2002 洛谷3203 HNOI2010 弹飞绵羊LCT

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

forever_shi的博客 238

Codex 接入自定义大模型终极教程:插件解锁、会话管理、国产模型一键搞定

🚀 Codex 默认只能使用 OpenAI 官方模型?这篇文章带你从零接入 DeepSeek、通义千问、GLM 等国产大模型,并彻底解锁插件、会话删除、多模型切换等隐藏功能。配置原理、常见坑点、傻瓜式增强工具分享,小白也能轻松上手!🔥

XiaoqiangClub的博客 3147

[BZOJ]2002: [Hnoi2010]Bounce 弹飞绵羊 分块

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

TYB的博客 358

YOLOv8车辆碰撞识别检测系统(项目源码+YOLO数据集+模型权重+UI界面+python+深度学习+环境配置+目标检测)

随着我国汽车保有量的持续攀升,道路交通事故数量居高不下,车辆碰撞损伤的快速、精准评估已成为交通安全管理、保险理赔定损以及汽车后市场服务中的关键环节。传统的人工目视查验方法高度依赖评估人员的专业经验,不仅主观性强、效率低下,而且在复杂光照、多角度遮挡等真实场景下难以保证评估的一致性和可复现性。计算机视觉与深度学习技术的迅猛发展,为目标检测任务提供了强有力的技术支撑,使得基于视觉的车辆损伤自动化识别成为可能。

斌擎科技 129

深入详细分析Skyworks 78113 PAMiD射频方案图

是一种高集成度的射频前端模块,它结合了功率放大器(PA)、双工器(Duplexer)、滤波器和开关等多个组件,主要用于4G LTE移动通信系统中的射频前端链路。是一款典型的PAMiD模块,通过将多个频段的发射(TX)和接收(RX)路径集成在一个模块中,大大减少了传统射频设计中的分立器件,同时提高了信号链路的效率和可靠性。模块化设计的优势PCB空间优化:高集成度设计大幅减小了射频电路的尺寸,适用于紧凑型移动设备。减少设计复杂度:模块化设计减少了器件间的匹配与调试工作,加速产品开发周期。性能稳定性。

weixin_43199439的博客 1480

博客园设置好看的主题!站在巨人的肩膀上眺望远方!!

站在大佬的肩膀上眺望远方,博客园设置好看的主题~

一些笔记 3122

matlab 一维相位解缠

一维相位解缠算法的matlab代码实现。

点云侠的博客 372

BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊(LCT)

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

Ab.Ever 446

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊(LCT裸题)

题目链接:BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 题意: 有n个节点,每个节点有个弹力系数xi,表示第i个节点可以弹到i+xi,如果超过了n就弹飞。 现在有两个操作: 1 x 询问从x开始要弹几次才能弹飞。 2 x y 将x的弹力系数更改为y。 题解: 这题可以分块可以LCT。 不过nlongn的均摊LCT比nsqrt(n)的分块慢,因为分块的常数小。 ...

weixin_30708329的博客 123

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊 LCT

→题目链接← 新博客链接:https://www.everlasting.wang/archives/180 【想说话的】 !解锁成就:学会LCT 【题解】 啊啊啊啊,不想写教程 所以..... LCT 【代码】 #include #define MAXN 200020 using namespace std; inline int rd()

everlasting的博客 370

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

bzoj2002: [Hnoi2010]Bounce 弹飞绵羊 [分块][LCT]

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

dirushi6322的博客 119

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

http://www.lydsy.com/JudgeOnline/problem.php?id=2002 (BZOJ挂了,还没在BZOJ测,先是在wikioi测过了,,) 囧。在军训时立志要学lct!!!这是一道lct的裸题,只有access操作(10行都没有啊亲。。。缩行大法的话,我就不说了。。)(link操作相当于水过),其实lct很简单。。想想都有点小激动。。。。。。 ...

186

BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 【LCT维护深度】

LCT板题。 然而我还是WA到自闭。 对着大数据调。。。(最后还是自己造小数据) 结果发现当LCT需要维护深度的时候不能随便beroot!! 一旦beroot之后深度关系就会变!! 所以把link,cut操作统统改掉。。变成直接断边。 Code(完整模板(很多函数都没用)): #include<cstdio> #include<cctype> #include<cst...

Master.Yi的博客 250

[LCT] BZOJ2002: [Hnoi2010]Bounce 弹飞绵羊

题意一条直线摆上n个装置,每个装置有个弹力系数ki,当绵羊达到第i个装置时,它会往后弹到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。 绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。 你需要执行m次操作,有两种类型: 1.修改某装置的弹力系数(ki始终为正整数) 2.询问从i起步被弹几次后会被弹飞 n,m<=200000题解算是LCT模板题吧。 添加一个点表示“弹飞”

Lynstery's blog 629

bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊 (LCT)

2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Limit: 259 MB Submit: 5392  Solved: 2846 [Submit][Status][Discuss] Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,L

whai的专栏 933

BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 [LCT]

2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit:10 SecMemory Limit:259 MBSubmit:9156Solved:4701[Submit][Status][Discuss] Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Los...

weixin_30300523的博客 84

BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 (LCT维护深度)

要维护深度,就维护一下size就行了.access一下x,那么从根->x这一条链就独立成为一棵splay,那么splay的size节点数就是x的深度. CODE #include <cstdio> #include <cstring> #include <algorithm> using namespace std; typedef long long L...

Ark 236
上一篇: BZOJ 1088: [SCOI2005]扫雷Mine 题解
下一篇: BZOJ 1059: [ZJOI2007]矩阵游戏 二分图匹配
NOIAu
博客等级 码龄10年 116粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值