#6282. 数列分块入门 6 - 题目 - LibreOJ (loj.ac)
给出一个长为 n n n的数列,以及 n n n个操作,操作涉及单点插入,单点询问,数据随机生成。
由于操作涉及单点插入,因此分块的长度会发生变化,因此采用 v e c t o r vector vector储存每个分块的数据,在更新的时将数据暴力取出更新后放回,对分块结构进行重构。
需要注意的是,并不是每次更新都需要重构,只需要在某个分块的 s i z e size size变得非常大时,我们才对分块进行暴力重构。如果变动不大,我们可以近似认为每个分块均摊插入后的 s i z e size size。
#include
#define ll int
#define pii pair
using namespace std;
const int N = 200005;
int blo, lst;
ll a[N], tmp_storage[N];
vector block[N];
void refresh(){
int tot = 0;
for(int i = 1; i 20 * blo) refresh();
}
inline int read(){
int f = 1, x = 0; char s = getchar();
while(s '9'){ if(s =='-') f = -1; s = getchar(); }
while(s >= '0' && s a[i];
for(int i = 1; i
关注
打赏
最近更新
- 深拷贝和浅拷贝的区别(重点)
- 【Vue】走进Vue框架世界
- 【云服务器】项目部署—搭建网站—vue电商后台管理系统
- 【React介绍】 一文带你深入React
- 【React】React组件实例的三大属性之state,props,refs(你学废了吗)
- 【脚手架VueCLI】从零开始,创建一个VUE项目
- 【React】深入理解React组件生命周期----图文详解(含代码)
- 【React】DOM的Diffing算法是什么?以及DOM中key的作用----经典面试题
- 【React】1_使用React脚手架创建项目步骤--------详解(含项目结构说明)
- 【React】2_如何使用react脚手架写一个简单的页面?