分块傻逼题。

memset很慢的。。。而且其实也没有用。。。。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
#define maxn 10050
#define maxm 1000500
using namespace std;
int n,m,col[maxn],pre[maxn],last[maxm],b[maxm],pos[maxn],len,num;
int x,y;
char s[];
void reset(int x)
{
int l=(x-)*len+,r=min(x*len,n);
for (int i=l;i<=r;i++)
b[i]=pre[i];
sort(b+l,b+r+);
}
void build()
{
if (n%len==) num=n/len;
else num=n/len+;
for (int i=;i<=num;i++)
reset(i);
}
void change()
{
scanf("%d%d",&x,&y);
for(int i=;i<=n;i++) last[col[i]]=;
col[x]=y;
for (int i=;i<=n;i++)
{
int regis=pre[i];
pre[i]=last[col[i]];last[col[i]]=i;
if (regis!=pre[i]) reset(pos[i]);
}
}
int find(int pos,int x)
{
int l=(pos-)*len+,r=min(pos*len,n);
int re=l;
while (l<=r)
{
int mid=(l+r)>>;
if (b[mid]<x) l=mid+;
else r=mid-;
}
return l-re;
}
void ask()
{
scanf("%d%d",&x,&y);
int ans=;
if (pos[x]==pos[y])
{
for (int i=x;i<=y;i++)
if (pre[i]<x) ans++;
}
else
{
for (int i=x;i<=pos[x]*len;i++)
if (pre[i]<x) ans++;
for (int i=(pos[y]-)*len+;i<=y;i++)
if (pre[i]<x) ans++;
for (int i=pos[x]+;i<=pos[y]-;i++)
ans+=find(i,x);
}
printf("%d\n",ans);
}
int main()
{
scanf("%d%d",&n,&m);
len=int(sqrt(n)+log(*n)/log());
for (int i=;i<=n;i++)
{
scanf("%d",&col[i]);
pre[i]=last[col[i]];
last[col[i]]=i;
pos[i]=(i-)/len+;
}
build();
for (int i=;i<=m;i++)
{
scanf("%s",s);
if (s[]=='Q') ask();
else change();
}
return ;
}

BZOJ 2120/BZOJ 2453的更多相关文章

  1. 【BZOJ 2453|bzoj 2120】 2453: 维护队列 (分块+二分)

    2453: 维护队列 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有 ...

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

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

  3. Bzoj 2120: 数颜色 && 2453: 维护队列 莫队,分块,bitset

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

  4. Bzoj 2453: 维护队列 && Bzoj 2120: 数颜色 分块,bitset

    2453: 维护队列 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 578  Solved: 247[Submit][Status][Discuss] ...

  5. BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】

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

  6. 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)

    试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...

  7. BZOJ 2120: 数颜色

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

  8. BZOJ 2120: 数颜色 分块

    2120: 数颜色 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php? ...

  9. bzoj 2120 带修改莫队

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

随机推荐

  1. poj 3903 Stock Exchange(最长上升子序列,模版题)

    题目 #include<stdio.h> //最长上升子序列 nlogn //入口参数:数组名+数组长度,类型不限,结构体类型可以通过重载运算符实现 //数组下标从1号开始. int bs ...

  2. iOS字符串大小转换

    NSString *test = @"Hello World";            // 小写      NSString *lower = [test lowercaseSt ...

  3. java集合之ArrayList的实现原理

    1. ArrayList概述: ArrayList是List接口的可变数组的实现.实现了所有可选列表操作,并允许包括 null 在内的所有元素.除了实现 List 接口外,此类还提供一些方法来操作内部 ...

  4. java基础知识回顾之javaIO类---BufferedReader和BufferedWriter

    使用了装饰设计模式:此类的设计是为了提高流操作数据的效率.思想就是定义容器将数据进行临时存储,对于缓冲区对象,其实就是将这个容器进行了分装,并提供了更高效的操作方法. BufferReader: pa ...

  5. Java 序列化的高级认识

    序列化 ID 问题 情境:两个客户端 A 和 B 试图通过网络传递对象数据,A 端将对象 C 序列化为二进制数据再传给 B,B 反序列化得到 C. 问题:C 对象的全类路径假设为 com.inout. ...

  6. 2013 ACM/ICPC Asia Regional Changsha Online - C Color Representation Conversion

    这个纯粹是一个细节题啊!!! 由于某个地方的浮点数比较写错了,WA了无数次啊…… 代码如下: #include<iostream> #include<cstdio> #incl ...

  7. java多线程理解2

    1. 什么时候必须同步?什么叫同步?如何同步? 要跨线程维护正确的可见性,只要在几个线程之间共享非 final 变量,就必须使用 synchronized(或 volatile)以确保一个线程可以看见 ...

  8. Docker搭建MySQL服务

    Docker开源镜像 前面我们已经安装好了Docker,也简单了解了Docker.那么我们可以尝试搭建一个MySQL服务. 要搭建服务就要启动服务容器,要创建容易就要有镜像,Docker提供了一个类似 ...

  9. 淘宝设计师入门:设计师SDK环境配置

    把淘宝官方的做法先过一遍:( http://open.taobao.com/doc/detail.htm?id=102527 ) 1.配置JAVA环境http://www.cnblogs.com/ti ...

  10. 什么是智能dns解析

    智能DNS解析是针对目前电信和网通互联互通不畅的问题推出的一种DNS解决方案.具体实现是:把同样的域名如test.winiis.com的A记录分别设置指向网通和电信IP,当网通的客户访问时,智能DNS ...