BZOJ 2453 维护队列
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 维护队列相关推荐
- Bzoj 2453: 维护队列 Bzoj 2120: 数颜色 分块,bitset
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MB Submit: 578 Solved: 247 [Submit][Status][Discus ...
- BZOJ 1012 单调队列+二分
思路: 维护一个单减的序列 序号是单增的 每回二分查找第一个比询问的大的值 我手懒 用得lower_bound //By SiriusRen #include <cstdio> #incl ...
- 洛谷3871 [TJOI2010]中位数 维护队列的中位数
题目描述 给定一个由N个元素组成的整数序列,现在有两种操作: 1 add a 在该序列的最后添加一个整数a,组成长度为N + 1的整数序列 2 mid 输出当前序列的中位数 中位数是指将一个序列按照从 ...
- luoguP1903 [国家集训队]数颜色 / 维护队列
带修改莫队经典题目 关于莫队的一篇很好的blog 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第 ...
- [国家集训队]数颜色 / 维护队列 (带修莫队模板题)
题意: 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2. ...
- 带修莫队 ---- P1903 [国家集训队]数颜色 / 维护队列 带修莫队模板
题目链接 题目大意: 解题思路: 带修改的莫队 首先我们要知道,普通的莫队算法是不资瓷修改操作的, 不过后人对莫队算法加以改进 发明了资瓷修改的莫队算法 思路 在进行修改操作的时候,修改操作是会对答案 ...
- P1903 [国家集训队]数颜色 / 维护队列
关于时间复杂度 对于多维莫队的复杂度差不多为\(O(n^{\frac{2k-1}{k}})\) 摘自zhihu大佬 奇偶分类优化 return a.l == b.l ? (a.l & 1) ? ...
- 洛谷 P1903 [国家集训队]数颜色 / 维护队列
题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R支画笔中共有几种不同颜色的画笔. 2 ...
- P1903-[国家集训队]数颜色/维护队列【带修莫队】
正题 题目链接:https://www.luogu.com.cn/problem/P1903 题目大意 要求支持两个操作 QLR:Q\ \ L\ \ R:Q L R:询问L,RL,RL,R之间有多 ...
最新文章
- 超级计算机 任务提交,vasp在超算中心的任务提交 - 第一原理 - 小木虫 - 学术 科研 互动社区...
- vc简易网络服务器、客户端实现
- Eclipse CDT Hello World工程makefile分析
- CSS text-indent 属性
- PyChram简单使用教程
- 性能测试工具Locust的使用----TaskSet类~~task任务嵌套
- 求旋转数组的最小元素
- declare-styleable中format详解
- tomcat容器启动
- linux模拟发包工具,linux发包软件-线不是一个压力测试工具的linux以上收缩服务器可...
- 提高效率的十款Blender快捷键,更多快捷键等着你去探索
- win10计算机禁用用户账户控制,win10用户账户控制怎么关闭_用户账户控制如何解除win10-win7之家...
- Locality-Aware NMS 局部感知NMS(LNMS)学习
- 链表A拆分成奇数和偶数值链表B和C
- UEFI规范驱动模型(二):驱动加载过程
- 手机录音m4a怎么转换成mp3
- MySQL中登录报错_mysql登录报错 ERROR 1045 (28000)
- h3c登录交换机的配置方法
- 磁带机LTO类型简单介绍(Tape drive LTO type)
- 详解ERP中的计划层次!
热门文章
- 团体程序设计天梯赛-练习集 1-2 打台球(5 分)
- scrapy分布式碰到的一些问题和解决方案
- 易之 - 我是个大师(2014年3月6日)
- C. Ehab and Path-etic MEXs
- java随机数函数_java随机函数使用方法Random
- python编程是什么-Python编程
- Fortinet谈ChatGPT火爆引发的网络安全行业剧变
- 大龄计算机考研 考研帮,过了40还想考研吗?大龄研究生讲述真实感受
- 导入训练好的模型参数代码报错Failed to find any matching files for ram://20787ba9-e8c3-4c71-a3b9-dc406d492e95/varia
- 几种更新(Update语句)查询的方法