题解:

可修改莫队

我们加入一个时间T

然后在排序的时候考虑一下时间

在计算的时候也要考虑

代码:

#include<bits/stdc++.h>
using namespace std;
const int N=;
struct Query
{
int l,r,Tim,id;
}q[N];
struct Change
{
int pos,New,Old;
}c[N];
char sign[];
int n,m,s[N],color[N*],t,x,y,Time,now[N],unit,Be[N],ans[N],Ans,l=,r,T;
int cmp(Query a,Query b)
{
if (Be[a.l]!=Be[b.l])return a.l<b.l;
if (Be[a.r]!=Be[b.r])return a.r<b.r;
return a.Tim<b.Tim;
}
void revise(int x,int d)
{
color[x]+=d;
if (d>)Ans+=color[x]==;
if (d<)Ans-=color[x]==;
}
void doit(int x,int d)
{
if (l<=x&&x<=r)
{
revise(d,);
revise(s[x],-);
}
s[x]=d;
}
int main()
{
scanf("%d%d",&n,&m);
int unit=pow(n,0.666666);
for (int i=;i<=n;i++)
{
scanf("%d",&s[i]);
now[i]=s[i];
Be[i]=i/unit+;
}
for (int i=;i<=m;i++)
{
scanf("%s%d%d",&sign,&x,&y);
if (sign[]=='Q')q[++t]=(Query){x,y,Time,t};
if (sign[]=='R')c[++Time]=(Change){x,y,now[x]},now[x]=y;
}
sort(q+,q+t+,cmp);
for (int i=;i<=t;i++)
{
while (T<q[i].Tim)doit(c[T+].pos,c[T+].New),T++;
while (T>q[i].Tim)doit(c[T].pos,c[T].Old),T--;
while (l<q[i].l)revise(s[l],-),l++;
while (l>q[i].l)revise(s[l-],),l--;
while (r<q[i].r)revise(s[r+],),r++;
while (r>q[i].r)revise(s[r],-),r--;
ans[q[i].id]=Ans;
}
for (int i=;i<=t;i++)printf("%d\n",ans[i]);
}

bzoj2120的更多相关文章

  1. 【bzoj2120】 数颜色

    http://www.lydsy.com/JudgeOnline/problem.php?id=2120 (题目链接) 题意 给出一个n个数,m个询问,每次询问一个区间或修改一个数,求区间内不同的数有 ...

  2. BZOJ2453维护队列&&BZOJ2120数颜色

    2016-05-28 11:20:22 共同的思路: 维护某种颜色上一次在哪里出现pre,可以知道当pre<询问的l时更新答案 块内按照pre排序 修改的时候重新O(n)扫一遍,如果和之前的不一 ...

  3. BZOJ2120 数颜色 莫队 带修莫队

    原文链接https://www.cnblogs.com/zhouzhendong/p/BZOJ2120.html 题目传送门 - BZOJ2120 题意 给定一个长度为 $n$ 的序列 $a$ ,有 ...

  4. BZOJ2120数颜色(带修改莫队)

    莫队算法是一种数据结构的根号复杂度替代品,主要应用在询问[l,r]到询问[l+1,r]和[l,r+1]这两个插入和删除操作复杂度都较低的情况下.具体思想是:如果把一个询问[l,r]看做平面上的点(l, ...

  5. BZOJ2120 数颜色 【带修莫队】

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

  6. bzoj2120 数颜色 莫队 带修改

    [bzoj2120]数颜色 Description 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...

  7. [BZOJ2120][BZOJ2453]数颜色

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

  8. BZOJ2120 数颜色(带修改莫队)

    本文版权归ljh2000和博客园共有,欢迎转载,但须保留此声明,并给出原文链接,谢谢合作. 本文作者:ljh2000作者博客:http://www.cnblogs.com/ljh2000-jump/转 ...

  9. BZOJ2120 数颜色

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

  10. bzoj2120 2453

    明显的数据结构题这道题的特殊性在于n只有10000,修改的操作只有1000那么就是说即便是O(n)的修改也没有太大的问题,只要常数写小一点即可考虑到以前对同色点的处理pre[i]表示与这个位置同色的前 ...

随机推荐

  1. HTTPS握手

    作用 内容加密 建立一个信息安全通道,来保证数据传输的安全: 身份认证 确认网站的真实性 数据完整性 防止内容被第三方冒充或者篡改 https的采用了对称加密和非对称加密.握手过程中采用非对称加密,得 ...

  2. 【Loadrunner】性能测试报告实战

    一.一份好的性能测试报告需要遵循什么规则? 好的报告只需要遵循3点即可:清晰的结构.简要的语言以及数据的对比. 二.如何用Loadrunner自动到处HTML以及word版的报告? 1.导出html格 ...

  3. SQL Server简洁查询正在运行SQL(等待事件)

    通常我们可以使用 sp_who2 我们希望更加简洁的信息,下面这个查询使用系统表sys.sysprocesses,以及sys.dm_exec_sql_text做OUTER APPLY. T-SQL是这 ...

  4. 当IDENTITY_INSERT设置为OFF时不能向表插入显示值。(源:MSSQLServer,错误码:544)

    错误提示"事务和快照同步时提示:当IDENTITY_INSERT设置为OFF时不能向表插入显示值.(源:MSSQLServer,错误码:544)" 原因:在SQL2008同步时到S ...

  5. docker——三剑客之Docker Machine

    Docker Machine是Docker官方三剑客项目之一,负责使用Docker的第一步,在多种平台上快速安装Docker环境.它支持多种平台,让用户在很短时间内搭建一套Docker主机集群. Ma ...

  6. ZOJ Monthly, January 2018 Solution

    A - Candy Game 水. #include <bits/stdc++.h> using namespace std; #define N 1010 int t, n; int a ...

  7. SQLServer中char、varchar、nchar、nvarchar比较

    转自:http://www.cnblogs.com/bluesky_blog/archive/2009/07/31/1535722.html 对于程序中的string型字段,SQLServer中有ch ...

  8. pyDay10

    内容来自廖雪峰的官方网站. 1.python的赋值语句:a, b, c = x, y, z 相当于 a = x, b = y, c = z.(事实上等式右边是一个tuple) 2.获得genarato ...

  9. 20145105 《Java程序设计》第3周学习总结

    20145105 <Java程序设计>第3周学习总结 教材学习内容总结 第四章 认识对象 一.类与对象 要产生对象必须先定义类,类是对象的设计图,对象是类的实例. (一)定义类 1.类定义 ...

  10. ZLYD团队第5周项目总结

    ZLYD团队第5周项目总结 项目进展 目前游戏人没有成功运行.初步判断是部分代码有误. 我们采用了两种运行方式,代码未出现明确错误.但问题可能是由于版本问题. 将Wall.java.Gold.java ...