题意显然:给出初始序列,单点修改,区间查询元素的种类。

由于时限过宽,暴力可过。

比较优秀的解法应该是莫队。

带修改的莫队题解可以看https://www.luogu.org/blog/user12668/solution-p1903

证明和解释比较详细。

但是……为什么我的莫队也要跑5~6秒,

 /*
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ô¡ô¡ô¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ô¡ô¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ó¡ô¡ô¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ó¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ô¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ô¡ô¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ô¡ô¡ô¡ó¡ô¡ô¡ô¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó¡ó
*/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<ctime>
#include<cstdlib>
#include<algorithm>
#include<cmath>
#include<string>
#include<queue>
#include<vector>
#include<map>
#include<set>
using namespace std;
int read(){
int xx=,ff=;char ch=getchar();
while(ch>''||ch<''){if(ch=='-')ff=-;ch=getchar();}
while(ch>=''&&ch<=''){xx=xx*+ch-'';ch=getchar();}
return xx*ff;
}
const int maxn=;
int N,M,a[maxn],b[maxn],arg[maxn][];
int belong[maxn],block;
struct query{
int x,y,t,id;
bool friend operator<(const query&A,const query&B){
if(belong[A.x]!=belong[A.y])
return A.x<B.x;
if(belong[A.y]!=belong[B.y])
return A.y<B.y;
return A.t<B.t;
}
}Q[maxn];
struct change{
int x,y,p;
}C[maxn];
int totc,totq;
int cnt[],now,ans[maxn];
int X,Y,T;
inline void add(int x){
if(!cnt[x])
now++;
cnt[x]++;
}
inline void del(int x){
cnt[x]--;
if(!cnt[x])
now--;
}
inline void change_add(int i){
if(X<=C[i].p&&C[i].p<=Y){
del(b[C[i].p]);
add(C[i].y);
}
b[C[i].p]=C[i].y;
}
inline void change_del(int i){
if(X<=C[i].p&&C[i].p<=Y){
del(b[C[i].p]);
add(C[i].x);
}
b[C[i].p]=C[i].x;
}
int main(){
//freopen("in.txt","r",stdin);
N=read(),M=read();
block=(int)pow(M,2.0/)+;
for(int i=;i<=N;i++)
belong[i]=(i-)/block;
for(int i=;i<=N;i++)
a[i]=b[i]=read();
for(int i=;i<=M;i++){
char opt=getchar();
while(opt==' '||opt=='\n')
opt=getchar();
arg[i][]=(opt=='Q');
arg[i][]=read();
arg[i][]=read();
if(arg[i][]==){
totc++;
C[totc].x=b[arg[i][]+];
C[totc].y=arg[i][];
C[totc].p=arg[i][]+;
b[arg[i][]+]=arg[i][];
}
else{
totq++;
Q[totq].x=arg[i][]+;
Q[totq].y=arg[i][];
Q[totq].id=totq;
Q[totq].t=totc;
}
}
for(int i=;i<=N;i++)
b[i]=a[i];
X=,Y=,T=;
cnt[a[]]=,now=;
for(int i=;i<=totq;i++){
for(;X<Q[i].x;X++)
del(b[X]);
for(;X>Q[i].x;X--)
add(b[X-]);
for(;Y<Q[i].y;Y++)
add(b[Y+]);
for(;Y>Q[i].y;Y--)
del(b[Y]);
for(;T<Q[i].t;T++)
change_add(T+);
for(;T>Q[i].t;T--)
change_del(T);
ans[Q[i].id]=now;
}
for(int i=;i<=totq;i++)
printf("%d\n",ans[i]);
return ;
}

人丑自带大常数

UVA - 12345 带修改的莫队的更多相关文章

  1. BZOJ 2120: 数颜色 带修改的莫队算法 树状数组套主席树

    https://www.lydsy.com/JudgeOnline/problem.php?id=2120 标题里是两种不同的解法. 带修改的莫队和普通莫队比多了个修改操作,影响不大,但是注意一下细节 ...

  2. 【BZOJ】2120: 数颜色 带修改的莫队算法

    [题意]给定n个数字,m次操作,每次询问区间不同数字的个数,或修改某个位置的数字.n,m<=10^4,ai<=10^6. [算法]带修改的莫队算法 [题解]对于询问(x,y,t),其中t是 ...

  3. 【bzoj4129】Haruna’s Breakfast 带修改树上莫队+分块

    题目描述 给出一棵树,点有点权.支持两种操作:修改一个点的点权,查询链上mex. 输入 第一行包括两个整数n,m,代表树上的结点数(标号为1~n)和操作数.第二行包括n个整数a1...an,代表每个结 ...

  4. 【bzoj3052】[wc2013]糖果公园 带修改树上莫队

    题目描述 给出一棵n个点的树,每个点有一个点权,点权范围为1~m.支持两种操作:(1)修改一个点的点权 (2)对于一条路径,求$\sum\limits_{i=1}^m\sum\limits_{j=1} ...

  5. P1903 [国家集训队]数颜色 / 维护队列 带修改的莫队

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

  6. UOJ 58 (树上带修改的莫队)

    UOJ 58 糖果公园 Problem : 给一棵n个点的树,每个点上有一种颜色,对于一条路径上的点,若 i 颜色第 j 次出现对该路径权值的贡献为 w[i] * c[j], 每次询问一条路径的权值, ...

  7. codeforces 940F 带修改的莫队

    F. Machine Learning time limit per test 4 seconds memory limit per test 512 megabytes input standard ...

  8. Machine Learning CodeForces - 940F(带修改的莫队)

    题解原文地址:https://www.cnblogs.com/lujiaju6555/p/8468709.html 给数组a,有两种操作,1 l r查询[l,r]中每个数出现次数的mex,注意是出现次 ...

  9. BZOJ 2120 数颜色(带修改的莫队)

    2120: 数颜色 Time Limit: 6 Sec  Memory Limit: 259 MB Submit: 3478  Solved: 1342 [Submit][Status][Discus ...

随机推荐

  1. navicat连接mysql8报错,错误提示为1251,原因及解决步骤

    一.错误原因: MySQL8.0版本的加密方式和MySQL5.0的不一样,连接会报错. 二.解决步骤: 1.在linux虚拟机上登录mysql 2.更改加密方式: ALTER USER 'root'@ ...

  2. php-fpm进程数管理

    PHP-FPM 先来了解一些名词概念: CGI是Common Gateway Interface(通用网管协议),用于让交互程序和Web服务器通信的协议.它负责处理URL的请求,启动一个进程,将客户端 ...

  3. django-1创建项目创建app设置setting、urls、templates、views等

    1. python -m django --version 查看版本 1.11.4 在需要创建项目的目录下执行: 2. django-admin startproject myblog => 创 ...

  4. python flask获取微信用户信息流程

    需要了解的几个url 用户第一次访问时的url,包含以下几个参数 https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID& ...

  5. Error: Divergence detected in AMG solver: k

    ** Error: Divergence detected in AMG solver: k A:Since you were working on convergence issue from pa ...

  6. 基于vue实现模糊匹配(这里以邮箱模糊匹配为例,其他的模糊匹配都可以类比)

    html部分(主要部分): js: data: methods: 效果图:

  7. 测试第一个Oracle存储过程

    存储过程语句 //简单存储过程的例子 //每调用一次打印一次hello world create or replace procedure sayhelloworld as begin dbms_ou ...

  8. 关于android系统启动不同activity默认过渡动画不同的一些认识

    在同一个android设备里,发现不同的app启动时显示的过渡动画是不同的.查看显示不同过渡动画的两个app的源码,其设置的主题都是同一个主题,但是为什么过渡动画效果不同呢?后来发现,activity ...

  9. [bzoj2058][Usaco2010 Nov]Cow Photographs_树状数组_动态规划

    Cow Photographs bzoj-2058 Usaco-2010 Nov 题目大意:给定一个n的排列.每次操作可以交换相邻两个数.问将序列变成一个:$i,i+1,i+2,...,n,1,2,. ...

  10. systemtap 作用-- SystemTap使用技巧

    http://blog.csdn.net/wangzuxi/article/details/42849053