分块傻逼题。

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. MySQL各个版本区别

    MySQL 的官网下载地址:http://www.mysql.com/downloads/ 在这个下载界面会有几个版本的选择. 1. MySQL Community Server 社区版本,开源免费, ...

  2. Redis与Memcached的incr/decr差异对比

    目前广泛使用的分布式缓存Redis和Memcached均支持对整数型Value值的增减,对应到具体命令中就是incr和decr命令. incr/decr是原子性操作(memcached 1.2.4及以 ...

  3. Activity学习(二)——生命周期

    一.什么是Activity? 简单的说:Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面.在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Ac ...

  4. 【蛙蛙推荐】Lucene.net试用

    [蛙蛙推荐]Lucene.net试用   [简介] lucene.net好多人都知道的吧,反正我是最近才好好的看了一下,别笑我拿历史当新闻哦,不太了解Lucence的朋友先听我说两句哦.Lucene的 ...

  5. java cookie

    public static void AddCookie(HttpServletResponse response, String key, String value) { Cookie cookie ...

  6. Spring MVC 教程,快速入门,深入分析(转)

    原文地址:http://elf8848.iteye.com/blog/875830/

  7. python_ftplib实现通过FTP下载文件

    1.  Ftplib常用函数介绍 Python中默认安装的ftplib模块定义了FTP类,其中函数有限,可用来实现简单的ftp客户端,用于上传或下载文件,本次主要介绍连接FTP并且进行文件下载功能,可 ...

  8. Spring笔记——Spring框架简介和初次框架配置

    Spring简介 Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Deve ...

  9. lua 的 WriteFile 和 ReadFile

    lua 的 ReadFile 和 WriteFile 注意: lua 代码中的 string 可以包含二进制数据 string.len(str) 不会被 '\0' 截断 从 lua 传入 c 时: 需 ...

  10. HighCharts开发说明及属性详解

    一.HighCharts开发说明: HighCharts 开发实际上配置HighCharts每个部分,比如配置标题(title),副标题(subtitle)等,其中每个部分又有更细的参数配置,比如标题 ...