思路:

暴力能过的 嘿嘿嘿

我是来练带修莫队的嗯 复杂度 O(n^5/3)

//By SiriusRen
#include <cmath>
#include <cstdio>
#include <algorithm>
using namespace std;
const int N=1050000;
int n,m,a[N],cnt1,cnt2,Block,block[N],xx,yy,ans,sum[N],last[N],Ans[N];
char op[105];
struct Query{
int L,R,time,id;
Query(int LL,int RR,int TT,int II){
L=LL,R=RR,time=TT,id=II;
}Query(){}
}query[N];
struct Change{
int position,color,lastcolor;
Change(int II,int CC,int LL){
position=II,color=CC,lastcolor=LL;
}Change(){}
}change[N];
bool operator<(Query a,Query b){
if(block[a.L]==block[b.L]){
if(a.R!=b.R)return a.R<b.R;
return a.time<b.time;
}
return block[a.L]<block[b.L];
}
void update(int x,int f){
if(f==1){if(!sum[x])ans++;sum[x]++;}
else if(f==-1){if(sum[x]==1)ans--;sum[x]--;}
}
int main(){
scanf("%d%d",&n,&m);
Block=(int)pow(n,2.0/3.0);
for(int i=1;i<=n;i++)scanf("%d",&a[i]),last[i]=a[i],block[i]=(i-1)/Block+1;
for(int i=1;i<=m;i++){
scanf("%s%d%d",op,&xx,&yy);
if(op[0]=='Q')query[++cnt1]=Query(xx,yy,cnt2,cnt1);
else change[++cnt2]=Change(xx,yy,last[xx]),last[xx]=yy;
}
sort(query+1,query+1+cnt1);
for(int L=1,R=0,i=1,T=0;i<=cnt1;i++){
for(;T<query[i].time;T++){
if(change[T+1].position>=L&&change[T+1].position<=R)
update(a[change[T+1].position],-1),update(change[T+1].color,1);
a[change[T+1].position]=change[T+1].color;
}
for(;T>query[i].time;T--){
if(change[T].position>=L&&change[T].position<=R)
update(a[change[T].position],-1),update(change[T].lastcolor,1);
a[change[T].position]=change[T].lastcolor;
}
for(;R<query[i].R;R++)update(a[R+1],1);
for(;R>query[i].R;R--)update(a[R],-1);
for(;L<query[i].L;L++)update(a[L],-1);
for(;L>query[i].L;L--)update(a[L-1],1);
Ans[query[i].id]=ans;
}
for(int i=1;i<=cnt1;i++)printf("%d\n",Ans[i]);
}

BZOJ 2120 带修莫队的更多相关文章

  1. bzoj 2120 带修改莫队

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit: 7340  Solved: 2982[Submit][Status][Discuss] ...

  2. bzoj 2120 数颜色 (带修莫队)

    题目链接: https://www.lydsy.com/JudgeOnline/problem.php?id=2120 题意:两种操作:Q 询问区间  l - r  内颜色的种类 ,R 单点修改 思路 ...

  3. BZOJ 2120 数颜色 (带修莫队)

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MBSubmit: 6367  Solved: 2537[Submit][Status][Discuss] ...

  4. BZOJ 3052/Luogu P4074 [wc2013]糖果公园 (树上带修莫队)

    题面 中文题面,难得解释了 BZOJ传送门 Luogu传送门 分析 树上带修莫队板子题... 开始没给分块大小赋初值T了好一会... CODE #include <bits/stdc++.h&g ...

  5. BZOJ 4129 Haruna’s Breakfast (分块 + 带修莫队)

    4129: Haruna’s Breakfast Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 835  Solved: 409[Submit][St ...

  6. BZOJ 3052 树上带修莫队

    思路: 就是把带修莫队移到了树上 块的大小开到(n^2/3)/2 比较好- 这是一个卡OJ好题 //By SiriusRen #include <cmath> #include <c ...

  7. BZOJ 4129 Haruna’s Breakfast ( 树上带修莫队 )

    题面 求树上某路径上最小的没出现过的权值,有单点修改 添加链接描述 分析 树上带修莫队板题,问题是怎么求最小的没出现过的权值. 因为只有nnn个点,所以没出现过的最小值一定在[0,n][0,n][0, ...

  8. 【BZOJ-3052】糖果公园 树上带修莫队算法

    3052: [wc2013]糖果公园 Time Limit: 200 Sec  Memory Limit: 512 MBSubmit: 883  Solved: 419[Submit][Status] ...

  9. 「洛谷1903」「BZOJ2120」「国家集训队」数颜色【带修莫队,树套树】

    题目链接 [BZOJ传送门] [洛谷传送门] 题目大意 单点修改,区间查询有多少种数字. 解法1--树套树 可以直接暴力树套树,我比较懒,不想写. 稍微口胡一下,可以直接来一个树状数组套主席树,也就是 ...

随机推荐

  1. JavaScript操作HTML&CSS简单入门

    - Java攻城狮学习路线 - 一. JavaScript基础 输出 使用 window.alert() 弹出警告框. 使用 document.write() 方法将内容写到 HTML 文档中. 使用 ...

  2. 9) 十分钟学会android--使用Fragment建立动态UI

    为了在 Android 上为用户提供动态的.多窗口的交互体验,需要将 UI 组件和 Activity 操作封装成模块进行使用,这样我们就可以在 Activity 中对这些模块进行切入切出操作.可以用  ...

  3. 使用vs2017创建项目并添加到git中

    参考 https://blog.csdn.net/qq373591361/article/details/71194651 https://blog.csdn.net/boonya/article/d ...

  4. 05--C语言运算符优先级和ASCII码表

  5. java_poi

    import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import org.apache. ...

  6. WIN 10 增删输入法

    第一步: 任务栏右击 “语言——设置” 第二步: 第三步: 删除或者增加就好.

  7. Gym-101615D Rainbow Roads 树的DFS序 差分数组

    题目链接:https://cn.vjudge.net/problem/Gym-101615D 题意 给一棵树,每个边权表示一种颜色. 现定义一条彩虹路是每个颜色不相邻的路. 一个好点是所有从该节点开始 ...

  8. [洛谷P4887]第十四分块(前体)

    题目大意: 给定一个长度为\(n\)的序列\(a\),\(k\),和\(m\)次询问. 每次询问给定区间\([l,r]\),求满足\(l\leqslant i< j\leqslant r\)且\ ...

  9. alsa文章

    http://blog.csdn.net/azloong/article/details/6140824 http://blog.csdn.net/tianshuai1111/article/deta ...

  10. 手机QQ架构的浅谈

    手机QQ的原本的产品定位定位于移动社交,并将娱乐与生活服务相结合,整体的架构模块QQ主要分为登录注册,消息,聊天,联系人,动态,侧边栏,设置等几大模块.其中消息模块和聊天模块是核心模块.好友动态及联系 ...