随手点开一个题。

咦,这不是裸的动态开点线段树吗?写一个写一个……

Code:

#include <cstdio>
#include <cstring>
using namespace std; const int N = 3e5 + ; int n, qn, a[N]; inline void read(int &X) {
X = ;
char ch = ;
int op = ;
for(; ch > '' || ch < ''; ch = getchar())
if(ch == '-') op = -;
for(; ch >= '' && ch <= ''; ch = getchar())
X = (X << ) + (X << ) + ch - ;
X *= op;
} struct Node {
int lc, rc, sum;
}; namespace PSegT {
int root[N], nodeCnt;
Node s[N * ]; #define mid ((l + r) >> 1) void up(int p) {
if(p) s[p].sum = s[s[p].lc].sum + s[s[p].rc].sum;
} void ins(int &p, int l, int r, int x) {
if(!p) p = ++nodeCnt;
if(l == x && x == r) {
s[p].sum++;
return;
} if(x <= mid) ins(s[p].lc, l, mid, x);
else ins(s[p].rc, mid + , r, x);
up(p);
} void del(int &p, int l, int r, int x) {
if(l == x && x == r) {
s[p].sum--;
if(s[p].sum == ) p = ;
return;
}
if(x <= mid) del(s[p].lc, l, mid, x);
else del(s[p].rc, mid + , r, x);
up(p); if(!s[p].lc && !s[p].rc && !s[p].sum) p = ;
} int query(int p, int l, int r, int x, int y) {
if(!p) return ;
if(x <= l && y >= r) return s[p].sum; int res = ;
if(x <= mid) res += query(s[p].lc, l, mid, x, y);
if(y > mid) res += query(s[p].rc, mid + , r, x, y);
return res;
} } using namespace PSegT; inline void swap(int &x, int &y) {
int t = x;
x = y;
y = t;
} int main() {
read(n), read(qn);
nodeCnt = ;
for(int i = ; i <= n; i++) {
read(a[i]);
ins(root[a[i]], , n, i);
} for(int op; qn--; ) {
read(op);
if(op == ) {
int x, y, c;
read(x), read(y), read(c);
printf("%d\n", query(root[c], , n, x, y));
} else {
int x;
read(x);
del(root[a[x]], , n, x);
del(root[a[x + ]], , n, x + );
swap(a[x], a[x + ]);
ins(root[a[x]], , n, x);
ins(root[a[x + ]], , n, x + );
}
} return ;
}

写完题的我:

内存太小,差评,卡常数,差评……这sb题……

点开题解:

……大概说的就是我……

没事复杂度其实是一样的

警醒a!!!不要一上手就乱写数据结构……

最新文章

  1. 利用 filter 机制 给 静态资源 url 加上时间戳,来防止js和css文件的缓存,利于开发调试
  2. 关于mysql 查询内容不区分大小问题
  3. 推荐10个很棒的AngularJS学习指南
  4. J-link烧写brjtag工具
  5. (转载)关于Apache 的两种工作模式
  6. WebAPI请求
  7. js unix时间戳转换
  8. asterisk manager api 配置 (manager.conf)
  9. C++结构体:默认构造函数,复制构造函数,重载=运算符
  10. Java自定义注解的实现
  11. SPA单页面应用
  12. 第82讲:Scala中List的ListBuffer是如何实现高效的遍历计算的?
  13. 【Go命令教程】12. go tool pprof
  14. PowerDesigner中翻转生成PDM图时把Name属性变成注释(转)
  15. Linux下安装load generator步骤及问题解决
  16. MapReduce的Shuffle过程介绍
  17. springboot 日期类型处理
  18. [BZOJ2727][HNOI2012]双十字
  19. python多线程练习
  20. Shiro学习之路 -- 架构及其组件

热门文章

  1. HDU - 5126 stars (CDQ分治)
  2. storm 学习教程
  3. java-03方法课堂练习
  4. Cash Machine(多重背包二进制转换)
  5. LoadRunner几个重要的概念:事务、集合点、思考时间
  6. 媒体查询ipad,pc端
  7. CF 732F Tourist Reform——v-SCC+dfs
  8. java代码List
  9. mycat接oracle和mysql多个实例
  10. MessageBox如何输出整数