【bzoj 2120】维护队列【bzoj 2453】数颜色 双倍经验!!!
来源:互联网 发布:iphone 163 smpt 端口 编辑:程序博客网 时间:2024/05/16 01:35
bzoj难得的双倍经验
QAQ
卡了我好久……
233333
分块
对于每个元素,我记录pre[i] = 上个颜色与i相同的位置
然后就和教主的魔法那题一样了23333333
如果pre[i] < l
则ans++
嗯还算好理解
QAQ一眼正解调一天系列23333333
因为询问很少
所以我可以暴力修改……
太暴力了……
23333333
自己看喽~
#include <iostream>#include <cstdio>#include <algorithm>#include <cstring>#include <cmath>#include <cctype>#define KILL puts("haha");using namespace std;const int MAXN = 10000 + 5;const int MAXC = 1e6 + 5;int n,m,M;int col[MAXN],so[MAXN];int pre[MAXN],last[MAXC];void reset(int x){ int l = min(n,x * M),r = min(n,x * M + M); for(int i = l;i < r;i ++) so[i] = pre[i]; sort(so + l,so + r); return;}void make_pre(){ for(int i = 0;i < n;i ++) last[col[i]] = -1; for(int i = 0;i < n;i ++) { so[i] = pre[i] = last[col[i]]; last[col[i]] = i; } for(int i = 0;i <= M;i ++) sort(so + min(n,i * M),so + min(n,i * M + M)); return;}void init(){ M = sqrt(n) + 1; make_pre(); return;}int ask(int x,int y){ int l = x,r = y; int ans = 0; while(l % M && l < r) ans += (pre[l] < x),l ++; while(r % M && r > l) ans += (pre[r] < x),r --; ans += (pre[r] < x); while(l < r) { ans += lower_bound(so + l,so + min(n,l + M),x) - (so + l); l += M; } return ans;}void change(int x,int y){ col[x] = y; for(int i = 0;i < n;i ++) last[col[i]] = -1; for(int i = 0;i < n;i ++) { int t = pre[i]; pre[i] = last[col[i]]; if(t != pre[i]) reset(i / M); last[col[i]] = i; } return;}void scanf(char &c){ c = getchar(); while(!isalpha(c)) c = getchar(); return;}char q;int l,r;int main(){ scanf("%d %d",&n,&m); for(int i = 0;i < n;i ++) scanf("%d",&col[i]); init(); for(int i = 1;i <= m;i ++) { scanf(q); switch(q) { case 'Q':scanf("%d %d",&l,&r);printf("%d\n",ask(l - 1,r - 1));break; case 'R':scanf("%d %d",&l,&r);change(l - 1,r);break; } } return 0;}
0 0
- 【bzoj 2120】维护队列【bzoj 2453】数颜色 双倍经验!!!
- BZOJ 2120: 数颜色&&2453: 维护队列【双倍经验】
- BZOJ 2453: 维护队列&&BZOJ 2120 数颜色 分块
- [树状数组套权值线段树 || 分块] BZOJ 2120 数颜色 & BZOJ 2453 维护队列
- BZOJ 2120: 数颜色/BZOJ 2453: 维护队列 带修改莫队
- BZOJ 2120: 数颜色 && 2453: 维护队列 【带修莫队版题【也可以学黄学长分块
- bzoj 2453: 维护队列
- bzoj 2453: 维护队列
- bzoj 2453: 维护队列
- bzoj 2453 维护队列
- BZOJ 2453 维护队列
- bzoj 2120: 数颜色
- bzoj 2120: 数颜色
- bzoj 2120: 数颜色
- BZOJ 2120 数颜色
- BZOJ 2120 数颜色
- BZOJ 2120: 数颜色
- BZOJ 2120 数颜色
- iOS使用FFmpeg 播放rtsp实时监控
- 6.8 Android Framework - ScaleDrawable
- python 字符串中查找子串
- Linux 忘记 用户名密码
- JVM内存分配
- 【bzoj 2120】维护队列【bzoj 2453】数颜色 双倍经验!!!
- Q_oneQ博客说明
- Xcode 插件优缺点对比(推荐 20 款插件)
- Latex overline断开连续字母上横线
- 常规功能和模块自定义系统 (cfcmms)—037模块记录(数据)的权限设计(2)
- 遗传算法入门(连载之八)
- C#泛型的初始化
- ReactJS 快速入门 1 介绍
- Android-UI布局2