LOJ6282 数列分块入门6
LOJ6282 数列分块入门 6 标签 分块入门 前言 这题一次过了~ 简明题意 维护序列,支持两种操作: 插入:给第l个元素前插入一个元素 查询:查询第r个元素的值 思路 直接开一个vector[]保存每一块的所有数。对于插入操作,直接找到对应的块,然后对这一块调用vector的insert。对于查询操作,直接把位置偏移过去,然后查询就好了。 注意事项 无 总结 无 AC代码 #include<cstdio> #include<algorithm> #include<cmath> #include<vector> using namespace std; const int maxn = 1e5 + 10; int n, a[maxn]; int pos[maxn], len; vector<int> b[maxn]; void change(int l, int r, int c) { int pt = 1, sum = b[1].size(); while (sum < l) pt++, sum += b[pt].size(); b[pt].insert(b[pt].begin() + l - (sum - b[pt].size()) - 1, r); } int cal(int l, int r, int c) { int pt = 1, sum = b[1].size()