\(\text{Solution}\)

涉及到插入,分块需要动态维护块内的元素及相对位置

于是妙用 \(\text{vector}\)

学到了 \(insert\) 操作,在某个迭代器前插入元素

这样我们对元数列分块,块长 \(\sqrt n\)

每个块用 \(\text{vector}\) 维护

插入时一块一块地找到合适块的合适位置,用 \(insert\) 插入容器(复杂度与插入位置到末元素长度线性相关)

\(\text{Solution}\)

#include <cstdio>
#include <vector>
#include <cmath>
#define re register
using namespace std; const int N = 1e5 + 5;
int n, a[N], st[N], ed[N], id[N];
vector<int> Q[N]; inline void prepare()
{
int num = sqrt(n);
for(re int i = 1; i <= num; i++)
{
st[i] = ed[i - 1] + 1, ed[i] = (i == num ? n : ed[i - 1] + n / num);
for(re int j = st[i]; j <= ed[i]; j++) id[j] = i;
}
for(re int i = 1; i <= n; i++) Q[id[i]].push_back(a[i]);
}
inline void Insert(int x, int v)
{
int cur = 0, p = 0;
while (cur < x) cur += Q[++p].size();
Q[p].insert(Q[p].begin() + Q[p].size() - cur + x - 1, v);
}
inline int Query(int x)
{
int cur = 0, p = 0;
while (cur < x) cur += Q[++p].size();
return Q[p][Q[p].size() - cur + x - 1];
} int main()
{
scanf("%d", &n);
for(re int i = 1; i <= n; i++) scanf("%d", &a[i]);
prepare();
for(re int i = 1, op, l, r, c; i <= n; i++)
{
scanf("%d%d%d%d", &op, &l, &r, &c);
if (!op) Insert(l, r);
else printf("%d\n", Query(r));
}
}

最新文章

  1. Android APK是否需要预解压
  2. struts2+spring的两种整合方式
  3. css content 如何自定义生成图标?
  4. Cookie实现商品浏览记录--方式一:Java实现
  5. java异常处理:建立exception包,建立Bank类,类中有变量double balance表示存款,Bank类的构造方法能增加存款,Bank类中有取款的发方法withDrawal(double dAmount),当取款的数额大于存款时,抛出InsufficientFundsException,取款数额为负数,抛出NagativeFundsException,如new Bank(100),
  6. uva 12003 分块
  7. css3写出0.5px的边框
  8. 文件上传利器SWFUpload入门简易教程
  9. 在SQL Server 2014下面使用的SQL2000的Northwind和Pubs示例数据库
  10. 每天一道LeetCode--342. Power of Four
  11. http cookie
  12. 初入Android--环境搭建
  13. php调用webservice的几种方法
  14. 使用spol导出exce
  15. Spring MVC入门讲解
  16. 【转】Kali更新源
  17. C# string 常用功能的方法扩展
  18. mysql插入数据会变中文
  19. CSS3 transition 属性过渡效果 详解
  20. The more... the more句型

热门文章

  1. typora实现多平台发布文章
  2. Linux deb系统 nginx 配置解析php
  3. 面试官:介绍一下 Redis 三种集群模式
  4. 【Java SE】Day02 数据类型转换、运算符、方法入门
  5. JAVA里Map的一些常用方法
  6. meta标签补充
  7. Ubuntu20.04 Java相关环境(JDK、Mysql、Redis、nacos、influxdb)部署以及运行
  8. formly-form 动态表单
  9. Django项目启动 AttributeError: ‘str‘ object has no attribute ‘decode‘ 问题
  10. uniapp微信小程序 原生底部导航栏