LOJ 数列分块入门6
LOJ 数列分块入门6
题目:
- 题目
题解:
- 我都不懂这题为什么要用分块... ...
- 直接vector就好了...
- 但是如果有区间修改的话就不行了。所以这题是启示我们也可以动态分块。具体就是每次插入时先找到位置所在的块,再暴力插入,把块内的其它元素直接向后移动一位。如果对于一个块插入过多元素时,需要重构(重新分块),从而使分块拥有更高的性能。
#include <iostream>
#include <cstdio>
#include <cmath>
#include <vector>
#define N 2000005
using namespace std;vector<int> a;
struct Blo {int l, r;} blo[N];
int n, num, size;
int bel[N];int read() {int x = 0, f = 1; char c = getchar();while (c < '0' || c > '9') {if (c == '-') f = -1; c = getchar();}while (c >= '0' && c <= '9') {x = x * 10 + c - '0'; c = getchar();}return x *= f;
}void build(int len) {size = (int)sqrt(len), num = len / size;if (len % size) num++;for (int i = 1; i <= len; i++) bel[i] = (i - 1) / size + 1;for (int i = 1; i <= num; i++) {blo[i].l = (i - 1) * size;blo[i].r = i * size;}blo[num].r = len;
}void update(int pos, int val) {blo[bel[pos]].r++;for (int i = bel[pos] + 1; i <= num; i++) {blo[i].l++;blo[i].r++;}a.insert(a.begin() + pos, val);
}int ask(int pos) {return a[pos];
}int main() {cin >> n;a.push_back(-1);for (int i = 1; i <= n; i++) a.push_back(read());build(n);for (int i = 1; i <= n; i++) {int op = read(), l = read(), r = read(), c = read();if(!op) update(l, r);else printf("%d\n", ask(r));}return 0;
}
转载于:https://www.cnblogs.com/BigYellowDog/p/11243433.html
LOJ 数列分块入门6相关推荐
- 【分块入门】LOJ 数列分块入门 1 - 9 (学习更新……)
dl题解 _「分块」数列分块入门1 – 9 by hzwer LOJ #6277. 数列分块入门 1 题意:给出一个长为n的数列,以及n个操作,操作涉及区间加法,单点查值. 时间限制:100ms 分块 ...
- LOJ #6280. 数列分块入门 4-分块(区间加法、区间求和)
#6280. 数列分块入门 4 内存限制:256 MiB时间限制:500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 题目描述 给出一个长为 ...
- LOJ #6279. 数列分块入门 3-分块(区间加法、查询区间内小于某个值x的前驱(比其小的最大元素))...
#6279. 数列分块入门 3 内存限制:256 MiB时间限制:1500 ms标准输入输出 题目类型:传统评测方式:文本比较 上传者: hzwer 提交提交记录统计测试数据讨论 3 题目描述 给出一 ...
- LOJ——#6277. 数列分块入门 1
~~推荐播客~~ 「分块」数列分块入门1 – 9 by hzwer 浅谈基础根号算法--分块 博主蒟蒻,有缘人可直接观摩以上大佬的博客... #6277. 数列分块入门 1 题目大意: 给出一个长为 ...
- #6277. 数列分块入门 1
题目链接:https://loj.ac/problem/6277 学习博客:http://hzwer.com/8053.html #6277. 数列分块入门 1 内存限制:256 MiB时间限制:10 ...
- #6279. 数列分块入门 3(区间修改,查询权值前驱)
#6279. 数列分块入门 3 这是使用hzwer建议的set写的分块代码,set自动排序,支持二分查找,但是常数较大,比我下面写的用vector实现的分块慢了三倍,空间大了10倍. #include ...
- 数列分块入门(套题)(loj6277,loj6278,loj6279,loj6280,loj6281,loj6282,loj6283,loj6284,loj6285)
前言 zjoi考差了,码一些分块题缓解一下心情 壹 数列分块入门 1[loj6277] 题目大意:区间加,单点查 直接分块,区间加时完全覆盖的块打tag,边界块暴力重构 块大小设为n\sqrt nn ...
- 数列分块入门 (1 ~ 7)
分块 6277. 数列分块入门 1 分块思想 我们把每m个元素分成一块,所以我们总共的块数就是n/mn / mn/m块,一般情况下我们取m=nm = \sqrt{n}m=n.对于区间加操作,我们可以 ...
- 「分块」数列分块入门1 – 9
ACM模板 放暑假了,回归!!! 自己不会写暴力,而且好久没写代码了,于是学学分块的优雅暴力~ 「分块入门-LibreOJ」 「分块」数列分块入门1 – 9 by hzwer 数列简单分块问题实际上有 ...
最新文章
- NSLog不打印设置
- 5年博龄只有十几篇文章,惭愧呀
- stk 坐标系_STK中文用户手册.pdf
- 下列说法正确的是( )
- 可以让SQL针对某个错误信息号抓DUMP的命令组合
- codeforces C. Diverse Permutation(构造)
- 为什么dubbo的调用重试不建议设置成超过1
- Android 功耗(20)---Android后台调度与省电
- 使用Python和Numpy进行波士顿房价预测任务(二)【深度学习入门_学习笔记】
- 机器学习-线性回归scikit-learn
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_2 响应之返回值是String类型...
- new delete 之placement new 和placement delete
- OneNote for win10防止英文自动切换字体工具
- 常见概率抽样方法及其适用场景总结(简单随机抽样、分层抽样、整群抽样、系统抽样)
- Unity 3D 动画系统(Mecanim)|| Unity 3D 人形角色动画(Avatar)
- 杰理之电脑连接样机蓝牙,开启音量同步,电脑无法大范围调节音量【篇】
- drag与drop事件
- Tabby sftp 下载文件夹
- ListView缓存机制小结
- 【MySQL】数据库机房架构与跨城容灾详解(实战篇)(MySQL专栏启动)
热门文章
- k8s minikube管理镜像相关命令:minikube image list/pull/load
- vscode设置终端字体大小
- Scala键盘录入代码示例
- scala中object和class关键字的区别
- Java基础--通过反射获取成员方法并使用
- Coding: 2的N次方
- vue tag=“li“ 和event原有样式渲染不出来
- php7序列化,php 7.2中未序列化字符串时出现问题
- java引用其他类的数据头文件_Java 实现数据表与简单Java类映射转换
- java大数据开发是做什么的_Java转型大数据开发教材,技能储备都在这儿!