博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
洛谷P3203弹飞绵羊
阅读量:5150 次
发布时间:2019-06-13

本文共 1920 字,大约阅读时间需要 6 分钟。

非常神奇的分块大法。

每块分 √N 个元素 , 预处理出来:对于每个点,记录两个量:一个是它要弹几次才能出它所在的这个块,另外一个是它弹出这个块后到哪个点。

查询操作:一块一块跳过去 单次复杂度 O(√N)

修改操作:只需要把相应的块改一遍就好了 这个也是O(√N)

#include 
#include
#include
#include
#include
using namespace std;const int maxn = 200005;const int maxm = 100005;inline int read(){ char ch = getchar(); int f = 1 , x = 0; while(ch > '9' || ch < '0'){if(ch == '-')f = -1;ch =getchar();} while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();} return x * f;}int n,a[maxn],m,flag,x,y,ans;int l[maxn],r[maxn],cnt,belong[maxn],to[maxn],step[maxn];void init(){ int t = sqrt(n); if(n / t) cnt = n / t + 1; else cnt = n / t; for(int i=1;i<=cnt;i++){ l[i] = r[i-1] + 1; r[i] = min(l[i] + t - 1 , n); } int x = 1; for(int j=1;j<=n;j++){ belong[j] = x; if(j == r[x] && x <= cnt) x++; } for(int i=n;i>=1;i--){ to[i] = i + a[i]; if(to[i] > r[belong[i]]) step[i] = 1; else { step[i] = step[to[i]] + 1; to[i] = to[to[i]]; } }}int main(){ n = read(); for(int i=1;i<=n;i++) a[i] = read(); init(); m = read(); while(m--){ ans = 0; flag = read(); if(flag == 1){ x = read(); x++; while(x <= n){ ans += step[x]; x = to[x]; } printf("%d\n",ans); } else { x = read(); y = read(); x++; a[x] = y; for(int i=r[belong[x]];i>=l[belong[x]];i--){ to[i] = i + a[i]; if(to[i] > r[belong[i]]) step[i] = 1; else { step[i] = step[to[i]] + 1; to[i] = to[to[i]]; } } } } return 0;}

转载于:https://www.cnblogs.com/Stephen-F/p/9883805.html

你可能感兴趣的文章
如何将应用完美迁移至Android P版本
查看>>
【转】清空mysql一个库中的所有表的数据
查看>>
基于wxPython的python代码统计工具
查看>>
淘宝JAVA中间件Diamond详解(一)---简介&快速使用
查看>>
Hadoop HBase概念学习系列之HBase里的宽表设计概念(表设计)(二十七)
查看>>
Kettle学习系列之Kettle能做什么?(三)
查看>>
【Mac + GitHub】之在另一台Mac电脑上下载GitHub的SSH链接报错
查看>>
Day03:Selenium,BeautifulSoup4
查看>>
awk变量
查看>>
mysql_对于DQL 的简单举例
查看>>
35. Search Insert Position(C++)
查看>>
[毕业生的商业软件开发之路]C#异常处理
查看>>
一些php文件函数
查看>>
jQuery 给div绑定单击事件
查看>>
有关快速幂取模
查看>>
Linux运维必备工具
查看>>
字符串的查找删除
查看>>
NOI2018垫底记
查看>>
快速切题 poj 1002 487-3279 按规则处理 模拟 难度:0
查看>>
Codeforces Round #277 (Div. 2)
查看>>