bzoj 2002 弹飞绵羊 分块
正解lct,然而本蒟蒻并不会....
分块思路很清晰,处理出每个点弹出所在块所需要的步数及出去后的第一个位置
#include<cstdio>
#include<cstring>
#include<iostream>
#include<cmath>
#define N 200005
using namespace std;
int n,m,nn,k[N],nxt[N],ned[N],be[N],tot;
int opt,aa,bb,ans;
void work(int x){
int l=(x-1)*nn+1,r=x*nn;
r=min(r,n);
for(int i=r;i>=l;i--)
{
if(i+k[i]>r){
ned[i]=1;
nxt[i]=i+k[i];
}
else{
ned[i]=ned[i+k[i]]+1;
nxt[i]=nxt[i+k[i]];
}
}
}
int main()
{
scanf("%d",&n);
nn=sqrt(n);
for(int i=1;i<=n;i++){
scanf("%d",&k[i]);
be[i]=(i-1)/nn+1;
}
tot=be[n];
for(int i=1;i<=tot;i++) work(i);
scanf("%d",&m);
for(int i=1;i<=m;i++)
{
scanf("%d%d",&opt,&aa);
aa++;
if(opt==1)
{
ans=0;
while(aa<=n){
ans+=ned[aa];
aa=nxt[aa];
}
printf("%d\n",ans);
}
else{
scanf("%d",&bb);
k[aa]=bb;
work(be[aa]);
}
}
return 0;
}
bzoj 2002 弹飞绵羊 分块的更多相关文章
- BZOJ 2002 弹飞绵羊(分块)
题目:弹飞绵羊 这道题,据说是lct裸题,但是lct那么高级的数据结构,我并不会,所以采取了学长讲过的分块做法,我们对序列分块,可以定义两个数组,其中一个表示从当前位置跳出当前块需要多少步,另一个数组 ...
- [bzoj] 2002 弹飞绵羊 || LCT
原题 简单的LCT练习题. 我们发现对于一个位置x,他只能跳到位置x+k,也就是唯一的父亲去.加入我们将弹飞的绵羊定义为跳到了n+1,那么这就形成了一棵树.而因为要修改k,所以这颗树是动态连边的,那么 ...
- bzoj 2002: 弹飞绵羊 Link-Cut-Tree
题目: Description 某天,Lostmonkey发明了一种超级弹力装置,为了在他的绵羊朋友面前显摆,他邀请小绵羊一起玩个游戏.游戏一开始,Lostmonkey在地上沿着一条直线摆上n个装置, ...
- BZOJ 2002 弹飞绵羊
LCT 刚学LCT,对LCT的性质不太熟练,还需要多多练习.. 对每一个点,将其与它能够到达的点连一条虚边.弹出去的话就用n+1这个节点表示. 第一种操作我们需要从LCT的性质入手,问的问题其实就是x ...
- bzoj 2002 弹飞绵羊 lct裸题
上一次用分块过了, 今天换了一种lct(link-cut tree)的写法. 学lct之前要先学过splay. lct 简单的来说就是 一颗树, 然后每次起作用的都是其中的某一条链. 所以每次如果需要 ...
- P3203 弹飞绵羊-分块
P3203 弹飞绵羊-分块 观察数据范围,发现可以分块.只需要处理每个点跳出所在块后的位置和次数即可.目的是为了加速查询并降低修改复杂度. 对于修改,重构整个块内信息即可. 时间复杂度正确的一批 具体 ...
- BZOJ 2002: [Hnoi2010]Bounce 弹飞绵羊 分块
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOn ...
- BZOJ 2002 Bounce 弹飞绵羊 (分块或动态树)
2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Limit: 259 MBSubmit: 13768 Solved: 6989[Subm ...
- BZOJ 2002 Bounce 弹飞绵羊 —— 分块算法
题目链接:https://vjudge.net/problem/HYSBZ-2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec Memory Li ...
随机推荐
- Emmet之html语法
一.简写语法 Emmet 用和 CSS 选择器相似的语法来描述元素的嵌套层级关系和属性,实现 HTML/XML/CSS 等代码的智能自动补全. 其通过文件名后缀识别文件类型,从而使用对应的自动补全语法 ...
- python3+django2 开发易语言网络验证(中)
第四步:网络验证的逻辑开发 1.将model注册到adminx.py中 1.在apps/yanzheng目录下新建admin.py 文件,添加代码: import xadmin from xadmin ...
- 常常搞不清楚SQLServer中的sp_columns来看一看
The sp_columns catalog stored procedure is equivalent to SQLColumns in ODBC. The results returned ar ...
- 【转载】Linux Cache Mechanism Summary(undone)
http://www.cnblogs.com/LittleHann/p/3904909.html 目录 1. 缓存机制简介 2. 内核缓存机制 3. 内存缓存机制 4. 文件缓存机制 5. 数据库缓存 ...
- mongodb查询语句
左边是mongodb语句,右边是sql语句 db.users.find() select * from users db.users.find({"age" : 27}) sele ...
- Ubuntu 下命令安装 Java
1. 使用 java -version 查看系统是否存在 jdk. 2. ubuntu使用的是openjdk,所以我们需要先找到合适的jdk版本.在命令行中输入命令:apt-cache search ...
- MVC-AOP(面向切面编程)思想-Filter之IExceptionFilter-异常处理
HandleErrorAttribute MVC中的基本异常分类: Action异常 T view异常 T, service异常 T, 控制器异常 F(异常get不到), ...
- Java并发-取消与关闭
如果外部代码可以再某个操作正常完成之前就将其置入"完成"状态,那么这个操作就是可以取消的.取消的原因有:用户请求取消.有时间限制的操作.应用程序事件.错误和关闭等 中断 如果使用某 ...
- javascript DOM编程艺术(检测与性能优化)
一.对象检测(是否支持js方法):只有支持了该方法才可调用 if(!getElementById || getElementsByTagName){ return false; } 二.性能考滤 1. ...
- 再探Circuit Breaker之使用Polly
前言 上一篇介绍了使用Steeltoe来处理服务熔断,这篇我们将用Polly来处理服务熔断. 不废话了,直接进正题. 简单的例子 同样先定义一个简单的服务. [Route("api/[con ...