Description
你小时候玩过弹珠吗?
小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N。为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有多少。当然,A有时候会依据个人喜好,替换队列中某个弹珠的颜色。但是A还没有学过编程,且觉得头脑风暴太浪费脑力了,所以向你来寻求帮助。


【题目分析】
同bzoj 2120 直接复制代码水过


【代码】

#include <cmath>
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
char op[15];
int L[201],R[201],ne[201],l,r,ll,rr,x,y;
int cnt,n,q,T;
int a[20001],pre[20001],b[20001],last[1000001],bel[20001];
int read()
{int ret=0,f=1;char ch=getchar();while (ch<'0'||ch>'9'){if (ch=='-') f=-1;ch=getchar();}while (ch>='0'&&ch<='9'){ret*=10;ret+=ch-'0';ch=getchar();}return ret*f;
}
void query()
{int ans=0;l=read();r=read();ll=bel[l];rr=bel[r];if (ll==rr){for (int i=l;i<=r;++i)if (pre[i]<l) ans++;printf("%d\n",ans);}else{for (int i=l;i<=R[ll];++i)if (pre[i]<l) ans++;for (int i=L[rr];i<=r;++i)if (pre[i]<l) ans++;for (int i=ll+1;i<rr;++i){int tmp=L[i]-1;int ls=L[i],rs=R[i];while (ls<rs){int mid=(ls+rs)/2+1;if (b[mid]<l) ls=mid,tmp=ls;else rs=mid-1;}ans+=tmp-L[i]+1;}printf("%d\n",ans);}
}
void modify(int now)
{for (int i=L[now];i<=R[now];++i) b[i]=pre[i];sort(b+L[now],b+R[now]+1);
}
void mod()
{x=read();y=read();for (int i=1;i<=n;++i) last[a[i]]=0;a[x]=y;for (int i=1;i<=n;++i){int t=pre[i];pre[i]=last[a[i]];last[a[i]]=i;if (t!=pre[i]) modify(bel[i]);}
}
int main()
{n=read();q=read();int T=sqrt(n);cnt=T;for (int i=1;i<=n;++i) a[i]=read();for (int i=1;i<=T;++i)L[i]=R[i-1]+1,R[i]=i*T;R[T]=n;for (int i=1;i<=T;++i)for (int j=L[i];j<=R[i];++j)bel[j]=i;for (int i=1;i<=n;++i){pre[i]=last[a[i]];last[a[i]]=i;}for (int i=1;i<=T;++i) modify(i);while (q--){scanf("%s",op);if (op[0]=='Q') query();else mod();}
}

BZOJ 2453 维护队列相关推荐

  1. Bzoj 2453: 维护队列 Bzoj 2120: 数颜色 分块,bitset

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MB Submit: 578  Solved: 247 [Submit][Status][Discus ...

  2. BZOJ 1012 单调队列+二分

    思路: 维护一个单减的序列 序号是单增的 每回二分查找第一个比询问的大的值 我手懒 用得lower_bound //By SiriusRen #include <cstdio> #incl ...

  3. 洛谷3871 [TJOI2010]中位数 维护队列的中位数

    题目描述 给定一个由N个元素组成的整数序列,现在有两种操作: 1 add a 在该序列的最后添加一个整数a,组成长度为N + 1的整数序列 2 mid 输出当前序列的中位数 中位数是指将一个序列按照从 ...

  4. luoguP1903 [国家集训队]数颜色 / 维护队列

    带修改莫队经典题目 关于莫队的一篇很好的blog 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第 ...

  5. [国家集训队]数颜色 / 维护队列 (带修莫队模板题)

    题意: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. ...

  6. 带修莫队 ---- P1903 [国家集训队]数颜色 / 维护队列 带修莫队模板

    题目链接 题目大意: 解题思路: 带修改的莫队 首先我们要知道,普通的莫队算法是不资瓷修改操作的, 不过后人对莫队算法加以改进 发明了资瓷修改的莫队算法 思路 在进行修改操作的时候,修改操作是会对答案 ...

  7. P1903 [国家集训队]数颜色 / 维护队列

    关于时间复杂度 对于多维莫队的复杂度差不多为\(O(n^{\frac{2k-1}{k}})\) 摘自zhihu大佬 奇偶分类优化 return a.l == b.l ? (a.l & 1) ? ...

  8. 洛谷 P1903 [国家集训队]数颜色 / 维护队列

    题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...

  9. P1903-[国家集训队]数颜色/维护队列【带修莫队】

    正题 题目链接:https://www.luogu.com.cn/problem/P1903 题目大意 要求支持两个操作 QLR:Q\ \ L\ \ R:Q  L  R:询问L,RL,RL,R之间有多 ...

最新文章

  1. 超级计算机 任务提交,vasp在超算中心的任务提交 - 第一原理 - 小木虫 - 学术 科研 互动社区...
  2. vc简易网络服务器、客户端实现
  3. Eclipse CDT Hello World工程makefile分析
  4. CSS text-indent 属性
  5. PyChram简单使用教程
  6. 性能测试工具Locust的使用----TaskSet类~~task任务嵌套
  7. 求旋转数组的最小元素
  8. declare-styleable中format详解
  9. tomcat容器启动
  10. linux模拟发包工具,linux发包软件-线不是一个压力测试工具的linux以上收缩服务器可...
  11. 提高效率的十款Blender快捷键,更多快捷键等着你去探索
  12. win10计算机禁用用户账户控制,win10用户账户控制怎么关闭_用户账户控制如何解除win10-win7之家...
  13. Locality-Aware NMS 局部感知NMS(LNMS)学习
  14. 链表A拆分成奇数和偶数值链表B和C
  15. UEFI规范驱动模型(二):驱动加载过程
  16. 手机录音m4a怎么转换成mp3
  17. MySQL中登录报错_mysql登录报错 ERROR 1045 (28000)
  18. h3c登录交换机的配置方法
  19. 磁带机LTO类型简单介绍(Tape drive LTO type)
  20. 详解ERP中的计划层次!

热门文章

  1. 团体程序设计天梯赛-练习集 1-2 打台球(5 分)
  2. scrapy分布式碰到的一些问题和解决方案
  3. 易之 - 我是个大师(2014年3月6日)
  4. C. Ehab and Path-etic MEXs
  5. java随机数函数_java随机函数使用方法Random
  6. python编程是什么-Python编程
  7. Fortinet谈ChatGPT火爆引发的网络安全行业剧变
  8. 大龄计算机考研 考研帮,过了40还想考研吗?大龄研究生讲述真实感受
  9. 导入训练好的模型参数代码报错Failed to find any matching files for ram://20787ba9-e8c3-4c71-a3b9-dc406d492e95/varia
  10. 几种更新(Update语句)查询的方法