【luogu P1903 [国家集训队]数颜色】 题解
题目链接:https://www.luogu.org/problemnew/show/P1903
裸的。。。带修莫队。。。
比较麻烦吧(对我来说是的)
两个变量分开记录查询和修改操作。
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cmath>
#define ri register
using namespace std;
const int maxn = ;
int n, m, bl, answer = , qnum = , unum = , curR, curL, now;
int ans[maxn],a[maxn],cnt[maxn];
struct query{
int l, r, p, t;
bool operator < (const query &x) const {
if(l / bl != x.l / bl) return l / bl < x.l / bl;
if(r / bl != x.r / bl) return r / bl < x.r / bl;
return t < x.t;
}
}q[maxn];
struct update{
int pos, val;
}u[maxn];
inline void add(int pos) {
if(++ cnt[pos] == ) answer ++;
}
inline void remove(int pos) {
if(-- cnt[pos] == ) answer --;
}
inline void change(int now, int i) {
if(q[i].l <= u[now].pos && u[now].pos <= q[i].r) {
if( --cnt[a[u[now].pos]] == ) answer--;
if( ++cnt[u[now].val] == ) answer++;
}
swap(a[u[now].pos], u[now].val);
}
int main()
{
scanf("%d%d",&n,&m);
bl = pow(n,1.0/);
for(ri int i = ; i <= n; i++)
scanf("%d",&a[i]);
for(ri int i = ; i <= m; i++)
{
int ch, x, y;
while((ch = getchar()) != 'Q' && ch != 'R');
scanf("%d%d", &x, &y);
if(ch == 'Q') {
q[++ qnum].l = x;
q[qnum].r = y;
q[qnum].t = unum;
q[qnum].p = qnum;
} else {
u[++unum].pos = x;
u[unum].val = y;
}
}
sort(q+,q+qnum+);
curL = q[].l, curR = curL - , now = ;
for(ri int i = ; i <= qnum; i ++) {
while(curL < q[i].l) remove(a[curL ++]);
while(curL > q[i].l) add(a[-- curL]);
while(curR < q[i].r) add(a[++ curR]);
while(curR > q[i].r) remove(a[curR --]);
while(now < q[i].t) change(++ now, i);
while(now > q[i].t) change(now --, i);
ans[q[i].p] = answer;
}
for(ri int i = ; i <= qnum; i++)
printf("%d\n",ans[i]);
return ;
}
【luogu P1903 [国家集训队]数颜色】 题解的更多相关文章
- Luogu P1903 [国家集训队]数颜色 or 维护队列
标准的带修莫队...咕到了现在$qwq$ 莫队是对询问排序来优化复杂度的(不带修就是对询问区间$[l,r]$排序).. 那么现在带修了,我们再可以维护一个时间维度$tm$:对于每个询问,每次回答前先检 ...
- LUOGU P1903 [国家集训队]数颜色 / 维护队列
传送门 解题思路 带修莫队,第一次写,其实和普通莫队差不多,就是多了个时间轴,块分n^(2/3)最优,时间复杂度O(n^(5/3)). #include<iostream> #includ ...
- Luogu P1903 [国家集训队]数颜色 / 维护队列 (带修莫队)
#include <cstdio> #include <cstring> #include <iostream> #include <algorithm> ...
- bzoj2120 / P1903 [国家集训队]数颜色 / 维护队列(带修改莫队)
P1903 [国家集训队]数颜色 / 维护队列 带修改的莫队 在原有指针$(l,r)$上又添加了时间指针$t$ 贴一段dalao的解释 带修改的莫队,和原版莫队相比,多了一个时间轴 原版莫队是将区间( ...
- 洛谷 P1903 [国家集训队]数颜色 解题报告
P1903 [国家集训队]数颜色 题目描述 墨墨购买了一套\(N\)支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1.Q L R代表询问你从第\(L\) ...
- P1903 [国家集训队]数颜色 / 维护队列(莫队区间询问+单点修改)
题目链接:https://www.luogu.org/problemnew/show/P1903 题目大意:中文题目 具体思路:莫队单点修改+区间询问模板题,在原来的区间询问的基础上,我们要记录当前这 ...
- BZOJ2120/洛谷P1903 [国家集训队] 数颜色 [带修改莫队]
BZOJ传送门:洛谷传送门 数颜色 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支画笔到第R ...
- ●洛谷P1903 [国家集训队]数颜色
题链: https://www.luogu.org/problemnew/show/P1903题解: 序列带修莫队, 推荐博客https://www.cnblogs.com/Paul-Guderian ...
- P1903 [国家集训队]数颜色 / 维护队列 带修改的莫队
\(\color{#0066ff}{ 题目描述 }\) 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会向你发布如下指令: 1. Q L R代表询问你从第L支 ...
随机推荐
- 最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础
最近准备把安卓和java的知识再回顾一遍,顺便会写博客上!千变万化还都是源于基础,打扎实基础,加油吧 距离去北京还有23天
- Column 'orders' in order clause is ambiguous
今天报了这个错误 原因是.当使用sql查询语句,使用了join查表.但是这个orders没指定是哪张表的字段 ,发生在自关联情况
- java 中String编码和byte 解码总结——字节流和字符流
1.InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符 InputStreamReader(InputStream in, Strin ...
- 白话SpringCloud | 第四章:服务消费者(RestTemple+Ribbon+Feign)
前言 上两章节,介绍了下关于注册中心-Eureka的使用及高可用的配置示例,本章节开始,来介绍下服务和服务之间如何进行服务调用的,同时会讲解下几种不同方式的服务调用. 一点知识 何为负载均衡 实现的方 ...
- Cookie的应用实例
ASP.NET设置元素CSS属性 1.添加一条CSS规则: control.style.add("CSS名称",“CSS值”); 2.添加Class规则 Control.CSSCl ...
- python 基础 知识
Python Python 是一种强类型 的解释型 动态型语言Python 对象中的不可变 数字,字符串,元组 ,对于不能改变的会创建一个新的 可变 列表 , 字典 ...
- 自定义ExtJS文件上传
日常工作中,一般文件上传都是跟随表单一起提交的,但是遇到form表单中有许多地方有文件上传时这种方式却不是很适用,以下是我工作中用的文件上传方式: { xtype: 'fileuploadfield' ...
- String字符串操作
char chars[] ={'a','b','c'}; String s = new String(chars); int len = s.length();//字符串长度 System.out.p ...
- 如何学习Java?学习Java顺序?
Java相对于Asp.Net或Asp.Net MVC来讲,入门是比较困难和烦琐的!它不像.Net哪样有安装开发工具就可以跑程序了,不需要配置复杂的运行环境. 推荐的学习Java的学习顺序如下: 一.J ...
- SCI收录的期刊查询
SCI 收录的期刊查询(动态) 1.Science Citation Index (SCI)收录期刊查询地址:http://www.isinet.com/cgi-bin/jrnlst/jlopti ...