题目传送门

第一次接触分块......

分块查找是折半查找和顺序查找的一种改进方法,分块查找由于只要求索引表是有序的,对块内节点没有排序要求,因此特别适合于节点动态变化的情况。

分块修改理论复杂度为O(N/M),M为块的大小,有基本不等式得M=Sqrt(N)时较优。

分块将原数组分为M块,对M块的信息进行维护。

这道题每个点记录一个它跳到下一个不是同一块的点是哪个点及需要几步跳到那个点。

code:

/**************************************************************
Problem: 2002
User: yekehe
Language: C++
Result: Accepted
Time:1648 ms
Memory:3956 kb
****************************************************************/ #include <cstdio>
#include <cmath>
using namespace std; int read()
{
char c;while(c=getchar(),c<''||c>'');
int x=c-'';while(c=getchar(),c>=''&&c<='')x=x*+c-'';
return x;
} const int MAXN=;
int N,M,Q,a[MAXN];
int belong[MAXN],nxt[MAXN],J[MAXN]; int Query(int x)
{
int tot=;
while(x<=N){
tot+=J[x];
x=nxt[x];
}
return tot;
} void Change(int x,int y)
{
int l=(belong[x]-)*M+,r=belong[x]*M;
a[x]=y;
for(int i=x;i>=l;i--){
if(i+a[i]>r)nxt[i]=i+a[i],J[i]=;
else nxt[i]=nxt[i+a[i]],J[i]=J[i+a[i]]+;
}
return ;
} int main()
{
N=read();M=sqrt(N);
if(M*M<N)M++;
register int i,j;
for(i=;i<=N;i++)a[i]=read();
j=;
for(i=;i<=M;i++)
for(;j<=i*M&&j<=N;j++)
belong[j]=i;
for(i=;i<=N;i++){
int Ks=;
for(j=i;j<=N&&belong[j]==belong[i];j+=a[j])Ks++;
nxt[i]=(j>N?N+:j);
J[i]=Ks;
}
Q=read();
while(Q--){
int o=read(),x=read();
if(o==)printf("%d\n",Query(x+));
else Change(x+,read());
}
}

分块算法&BZOJ2002的更多相关文章

  1. hdu 5057 Argestes and Sequence(分块算法)

    Argestes and Sequence Time Limit: 5000/2500 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Ot ...

  2. 基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET

    基于视觉信息的网页分块算法(VIPS) - yysdsyl的专栏 - 博客频道 - CSDN.NET 于视觉信息的网页分块算法(VIPS) 2012-07-29 15:22 1233人阅读 评论(1) ...

  3. [置顶] CF 86D Powerful array 分块算法入门,n*sqrt(n)

    简介:分块算法主要是把区间划分成sqrt(n)块,从而降低暴力的复杂度, 其实这算是一种优化的暴力吧,复杂度O(n*sqrt(n)) 题意:给定一个数列:a[i]    (1<= i <= ...

  4. bzoj 2002: [Hnoi2010]Bounce 弹飞绵羊(分块算法)

    传送门 题意: 中文题意,不再赘述. 题解: 下午在补分块算法的相关知识,看到某大神博客推荐的这道题目,就试着做了做: TLE了一下午可还行: 我的思路: 将这 n 个点分成 sqrt(n) 块: i ...

  5. 矩阵LU分解分块算法实现

    本文主要描述实现LU分解算法过程中遇到的问题及解决方案,并给出了全部源代码. 1. 什么是LU分解? 矩阵的LU分解源于线性方程组的高斯消元过程.对于一个含有N个变量的N个线性方程组,总可以用高斯消去 ...

  6. BZOJ 2002 Bounce 弹飞绵羊 —— 分块算法

    题目链接:https://vjudge.net/problem/HYSBZ-2002 2002: [Hnoi2010]Bounce 弹飞绵羊 Time Limit: 10 Sec  Memory Li ...

  7. c++分块算法(暴力数据结构)

    快要noip了,该写些题解攒攒rp了(逃) 看到题解里那么多线段树啊,树状数组啊,本蒟蒻表示:这都是什么鬼东西? 在所有高级数据结构中,树状数组是码量最小的,跑的也基本是最快的,但理解很难,并且支持的 ...

  8. CF 86D Powerful array 【分块算法,n*sqrt(n)】

    给定一个数列:A1, A2,……,An,定义Ks为区间(l,r)中s出现的次数. t个查询,每个查询l,r,对区间内所有a[i],求sigma(K^2*a[i]) 离线+分块 将n个数分成sqrt(n ...

  9. 【bzoj 2038】 [2009国家集训队]小Z的袜子(算法效率--莫队分块算法 模版题)

    题意:小Z有N只袜子,有不同的颜色.他有M个提问,问从编号为[L,R]的袜子中随机选一双同色的袜子的概率,用最简分数表示. 解法:经典的莫队算法--无修改.不强制在线(可离线).状态转移可以一步完成. ...

随机推荐

  1. java 方法修改主函数里基本数据类型和引用数据类型的区别

    public class Dog { public void Age(int age) {//副本新建的age age++;//对副本修改 System.out.println(age); } pub ...

  2. nordic对苹果性能测试

    环境: app采用nrf connect或lightblue均可: nordic从端采用nrf52840开发板pca10056: 说明与规定: (1)鉴于手机app无法主动连续快速发送多包数据,故只测 ...

  3. 通过iframe标签绕过csp

    iframe.php代码如下: allow-popups开启时,window.open就可以打开新的窗口. 看csp规则,默认是在当前域内,如果这是一个ctf题的话,就很简单了,window.loca ...

  4. [19/04/14-星期日] 网络编程_java.net包(InetAddress类、InetSocketAddress类、URL类)

    一.概念 Java为了可移植性,不允许直接调用操作系统,而是由java.net包来提供网络功能.Java虚拟机负责提供与操作系统的实际连接. InetAddress    作用:封装计算机的IP地址和 ...

  5. Kali-linux使用社会工程学工具包(SET)

    社会工程学工具包(SET)是一个开源的.Python驱动的社会工程学渗透测试工具.这套工具包由David Kenned设计,而且已经成为业界部署实施社会工程学攻击的标准.SET利用人们的好奇心.信任. ...

  6. Dubbo实践(十)代理

    Invoker调用 代理有几种方式:普通代理.JDK.Javassist库动态代理.Javassist库动态字节码代理. 生成代理的目的是你调用invoker的相关函数后,就等同于是调用DubboIn ...

  7. ASP.NET如何批量保存动态生成的文本框?

    对于OA系统,表单签核功能必不可少.而根据公司的情况,表单自然又五花八门,所以就要求能够让用户自己建立表单并设定表单的流程.填写内容等等.我之前写过一篇文章[地址:pivot的用法(SQL SERVE ...

  8. HDU 3367 (伪森林,克鲁斯卡尔)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=3367 Pseudoforest Time Limit: 10000/5000 MS (Java/Oth ...

  9. 404 Note Found 队-Alpha9

    目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:翟丹丹 组员7:何家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示 ...

  10. Activiti6.0 spring5 工作流引擎 java SSM流程审批 项目框架

    1.模型管理 :web在线流程设计器.预览流程xml.导出xml.部署流程 2.流程管理 :导入导出流程资源文件.查看流程图.根据流程实例反射出流程模型.激活挂起 3.运行中流程:查看流程信息.当前任 ...