bzoj 2002 Bounce 弹飞绵羊
2002: [Hnoi2010]Bounce 弹飞绵羊
提交: 16133 解决: 8253
题目描述
某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏。游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当绵羊达到第i个装置时,它会往后弹ki步,达到第i+ki个装置,若不存在第i+ki个装置,则绵羊被弹飞。绵羊想知道当它从第i个装置起步时,被弹几次后会被弹飞。为了使得游戏更有趣,Lostmonkey可以修改某个弹力装置的弹力系数,任何时候弹力系数均为正整数。
输入
第一行包含一个整数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
输出
对于每个i=1的情况,你都要输出一个需要的步数,占一行。
样例输入
1 2 1 1
3
1 1
2 1 1
1 1
样例输出
3
#include<bits/stdc++.h> using namespace std; const int maxn=200005; int k[maxn],next[maxn],jump[maxn],block,n; int main() {int i,w,op,x,y,m,ans;scanf("%d",&n);block=sqrt(n);for(i=0;i<n;i++) scanf("%d",&k[i]);for(i=n-1;i>=0;i--){w=i+k[i];if(w>=n) next[i]=-1,jump[i]=1;else if(w>=(i/block+1)*block) next[i]=w,jump[i]=1;else next[i]=next[w],jump[i]=jump[w]+1;}scanf("%d",&m);while(m--){scanf("%d",&op);if(op==1){ans=0;scanf("%d",&x);for(;next[x]!=-1;x=next[x]) ans+=jump[x];ans+=jump[x];printf("%d\n",ans);}else{scanf("%d",&x);scanf("%d",&k[x]);for(y=x;y>=x/block*block;y--){w=y+k[y];if(w>=n) next[y]=-1,jump[y]=1;else if(w>=(y/block+1)*block) next[y]=w,jump[y]=1;else next[y]=next[w],jump[y]=jump[w]+1;}}}system("pause");return 0; }
转载于:https://www.cnblogs.com/VividBinGo/p/11294791.html
bzoj 2002 Bounce 弹飞绵羊相关推荐
- BZOJ 2002 Bounce 弹飞绵羊 [Hnoi2010]
弹飞绵羊 题目的网址为: http://www.lydsy.com/JudgeOnline/problem.php?id=2002 题目大意 有N个点,每个点有一个系数a[i],你处于位置i可以走到i ...
- BZOJ 2002 Bounce 弹飞绵羊 [分块]
本身是一道lct裸题,为了证明分块的优越性,可用性,强行写了一波不擅长的分块...GG 分块思路很优秀,每个点记录跳出分块的步数以及跳到下一分块的哪个点 #include<cmath> # ...
- 【bzoj 2002】弹飞绵羊
Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- BZOJ 2002 HNOI2010 弹飞绵羊 分块
题目大意及LCT版本题解:见 http://blog.csdn.net/popoqqq/article/details/38849471 今天手滑用分块又重写了一遍这道题0.0 分块就是短啊 将弹簧分 ...
- bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊(分块)
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MB Submit: 10761 Solved: 5542 [Su ...
- 2002: [Hnoi2010]Bounce 弹飞绵羊
2002: [Hnoi2010]Bounce 弹飞绵羊 https://www.lydsy.com/JudgeOnline/problem.php?id=2002 分析: 绵羊在弹飞的路径中相当于一棵 ...
- HYSBZ - 2002 :Bounce 弹飞绵羊 (分块算法)
Bounce 弹飞绵羊 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置 ...
- AC日记——[HNOI2010]BOUNCE 弹飞绵羊 洛谷 P3203
[HNOI2010]BOUNCE 弹飞绵羊 思路: SBlct: 代码: #include <bits/stdc++.h> using namespace std; #define max ...
- Bounce 弹飞绵羊
某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置,每个装置设定初始弹力系数ki,当 ...
最新文章
- 特征选择过滤法之方差选择、双样本t检验、方差分析、相关系数法、卡方检验、互信息法
- 机构:去年购房者平均年龄近30岁
- 通话过程中显示呼叫失败_电销行业如何破局?深海捷云呼叫中心协助企业通过挑战...
- 链表应用——多项式相加
- SAP C4C一个典型的客户Organization和employee的同步需求
- 翻译题(map使用)
- java实现远程系统控制_java实现电脑远程控制完整源代码
- MySQL之创建表以及数据库增删改操作
- MySQL 百万级数据,怎么做分页查询?
- nfc修改饭卡软件下载_手机nfc模拟门禁卡app-NFC卡模拟软件中文版下载安卓标准版-西西软件下载...
- @Scheduled定时器,每月1号执行
- 2022年最新谷歌商店上架_Google Play 上架全流程附图
- 明日之后android和ios,明日之后互通区有哪些 明日之后ios和安卓互通区一览
- 如何使用idea生成Doc文档
- Winfrom+Devexpress 之GridControl ConvertTo TileView 制作精美的卡片式看板
- 常见网络协议总结(五层自顶向下)
- A计划:基础架构软件创业之道分享实录
- AtCoder Beginner Contest 203(Sponsored by Panasonic) D.Pond(二分+二维前缀和)
- 实现nginx的https 功能报错:
- 听肖邦Chopin: Waltz No.19 in A minor, Op.Posth的美好