博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Luogu 3939 数颜色
阅读量:5246 次
发布时间:2019-06-14

本文共 2352 字,大约阅读时间需要 7 分钟。

随手点开一个题。

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

Code:

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

写完题的我:

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

点开题解:

……大概说的就是我……

没事复杂度其实是一样的

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

转载于:https://www.cnblogs.com/CzxingcHen/p/9470370.html

你可能感兴趣的文章
训练记录
查看>>
IList和DataSet性能差别 转自 http://blog.csdn.net/ilovemsdn/article/details/2954335
查看>>
Hive教程(1)
查看>>
第16周总结
查看>>
C#编程时应注意的性能处理
查看>>
比较安全的获取站点更目录
查看>>
苹果开发者账号那些事儿(二)
查看>>
UVA11374 Airport Express
查看>>
P1373 小a和uim之大逃离 四维dp,维护差值
查看>>
NOIP2015 运输计划 树上差分+树剖
查看>>
P3950 部落冲突 树链剖分
查看>>
读书汇总贴
查看>>
微信小程序 movable-view组件应用:可拖动悬浮框_返回首页
查看>>
MPT树详解
查看>>
空间分析开源库GEOS
查看>>
RQNOJ八月赛
查看>>
前端各种mate积累
查看>>
jQuery 1.7 发布了
查看>>
Python(软件目录结构规范)
查看>>
Windows多线程入门のCreateThread与_beginthreadex本质区别(转)
查看>>