题意

n(n≤105)个洞排成一条直线,第ii个洞有力量值ai,当一个球掉进洞ii时就会被立刻弹到i+ai,直到超出n。进行m(m≤105)次操作:

·修改第i个洞的力量值ai。

·在洞xx上放一个球,问该球几次后被哪个洞弹飞出界。

思路

分块暴力,每个块内维护两个信息(块内DP可以求出):

①从当前位置跳出块内需要跳几次num[i]

②从当前块内跳出的下一个位置jump[i]

修改:

只需要将修改元素所在块内信息更新一次即可,单次时间复杂O(√n)

查询:

由起点i不停往下一个块跳jump[i],并且累计次数num[i],在最后一个块内暴力便利一遍就行了

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
const int maxn=1e5+10;
int n,m,bl,bel[maxn],x,y;
int a[maxn],num[maxn],jump[maxn];
void update(int x)
{
int fr=x*bl,to=fr+bl-1;if(to>n) to=n;
for(int i=to;i>=fr;i--){
if(a[i]+i>to){
num[i]=1;
jump[i]=a[i]+i;
}
else{
num[i]=num[i+a[i]]+1;
jump[i]=jump[i+a[i]];
}
}
}
void query(int x)
{
int ans=0,i,pre;
for(i=x;i<=n;i=jump[i])
ans+=num[i],pre=i;
while(pre+a[pre]<=n)
pre+=a[pre];
printf("%d %d\n",pre,ans);
}
int main()
{
scanf("%d%d",&n,&m);
int op;
for(int i=1;i<=n;i++){
scanf("%d",&a[i]);
num[i]=0;
jump[i]=i;
}
bl=sqrt(n);
for(int i=0;i<=n/bl;i++)
update(i);
while(m--){
scanf("%d",&op);
if(op==0){
scanf("%d%d",&x,&y);
a[x]=y;
update(x/bl);
}
else{
scanf("%d",&x);
query(x);
}
}
return 0;
}

  

 

(分块)Holes CodeForces - 13E的更多相关文章

  1. Mice and Holes CodeForces - 797F

    Mice and Holes CodeForces - 797F 题意:有n只老鼠和m个洞,都在一个数轴上,老鼠坐标为x[1],...,x[n],洞的坐标为p[1],...,p[m],每个洞能容纳的老 ...

  2. CodeForces 13E. Holes 分块处理

    正解是动态树,太难了,仅仅好分块处理水之.看了看status大概慢了一倍之多..     分块算法大体就是在找一个折衷点,使得查询和改动的时间复杂度都不算太高,均为o(sqrt(n)),所以总的时间复 ...

  3. codeforces 13E . Holes 分块

    题目链接 nextt数组表示这个位置的下一个位置. cnt数组表示这个位置 i 到nextt[i]可以弹几次. end[i] 表示在从 i 弹出去的情况下, 最后一个位置是哪里. 然后就看代码吧. # ...

  4. CodeForces - 13E(分块)

    Little Petya likes to play a lot. Most of all he likes to play a game «Holes». This is a game for on ...

  5. CodeForces 13E 分块

    题目链接:http://codeforces.com/problemset/problem/13/E 题意:给定n个弹簧和每个弹簧初始的弹力a[].当球落在第i个位置.则球会被弹到i+a[i]的位置. ...

  6. CodeForces - 13E

    Little Petya likes to play a lot. Most of all he likes to play a game «Holes». This is a game for on ...

  7. 构造+分块思想 Codeforces Round #319 (Div. 1) C

    http://codeforces.com/contest/576/problem/C 题目大意: 给你一个曼哈顿距离的图,然后要求你找到一个链,链穿了所有的点 然后要求这链的长度<=25*10 ...

  8. AC日记——Mice and Holes codeforces 797f

    797F - Mice and Holes 思路: XXYXX: 代码: #include <cmath> #include <cstdio> #include <cst ...

  9. Codeforces Beta Round #13 E. Holes 分块暴力

    E. Holes Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/13/problem/E Des ...

随机推荐

  1. while循环&CPU占用率高问题深入分析与解决方案

    直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方.使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果, ...

  2. H3C开启Ssh

    [H3C]ssh server enable                       //开启SSH服务 [H3C]user-interface vty 0 4 [H3C-ui-vty0-4]au ...

  3. 【39.87%】【BZOJ 1880】[Sdoi2009]Elaxia的路线

    Time Limit: 4 Sec  Memory Limit: 64 MB Submit: 1041  Solved: 415 [Submit][Status][Discuss] Descripti ...

  4. dotnet 方法名 To 和 As 有什么不同

    在看到 dotnet 框架里面有很多方法里面用了 ToXx 和 AsXx 好像都是从某个类转换为另一个类,那么这两个方法命名有什么不同 在约定的方法命名里面,用 To 的方法表示从类 A 转为类 B ...

  5. 【38.63%】【hdu 3047】Zjnu Stadium

    Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s) ...

  6. C# 强转空会不会出现异常

    有小伙伴问我强转 null 会不会出现异常,我告诉他,如果是引用类型那么不会,如果是值类型,那么会出现空异常 如果是引用类型,只要是空类型,是支持随意转换,如下面代码,这是可以运行 class Pro ...

  7. github 项目搜索技巧-让你更高效精准地搜索项目

    目录 github 搜索技巧 案例 普通搜 搭配技巧搜 限定词 查找某个用户或组织的项目 辅助限定词 还没搞懂的(关于 forks.mirror.issues) 排序(放的是官网的链接) 使用指南 练 ...

  8. 网络知识_01:ISO七层模型

    一 IOS七层模型 1.1OSI的概念 Open System Interconnect开放系统互连参考模型,是由ISO(国际标准化组织)定义的.它是个灵活的.稳健的和可互操作的模型. 1.2OSI模 ...

  9. CPP STL学习笔记

    STL的概念 源地址  https://www.ev0l.art/index.php/archives/15/ <li> Iterator (迭代器)<li> Containe ...

  10. shell脚本查找tcp过多ip地址封掉

    #!/bin/bash #hc source /etc/profile iplist=`netstat -ntu | awk '{print $5}'| cut -d':' -f1| sort |un ...