BZOJ 2120/BZOJ 2453
分块傻逼题。
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的更多相关文章
- 【BZOJ 2453|bzoj 2120】 2453: 维护队列 (分块+二分)
2453: 维护队列 Description 你小时候玩过弹珠吗? 小朋友A有一些弹珠,A喜欢把它们排成队列,从左到右编号为1到N.为了整个队列鲜艳美观,小朋友想知道某一段连续弹珠中,不同颜色的弹珠有 ...
- BZOJ 2120 数颜色(带修改的莫队)
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MB Submit: 3478 Solved: 1342 [Submit][Status][Discus ...
- Bzoj 2120: 数颜色 && 2453: 维护队列 莫队,分块,bitset
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 2645 Solved: 1039[Submit][Status][Discuss] ...
- Bzoj 2453: 维护队列 && Bzoj 2120: 数颜色 分块,bitset
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 578 Solved: 247[Submit][Status][Discuss] ...
- BZOJ 2120 数颜色&2453 维护队列 [带修改的莫队算法]【学习笔记】
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3665 Solved: 1422[Submit][Status][Discuss] ...
- 洛谷 P1903 BZOJ 2120 清橙 A1274【模板】分块/带修改莫队(数颜色)(周奕超)
试题来源 2011中国国家集训队命题答辩 题目描述 墨墨购买了一套N支彩色画笔(其中有些颜色可能相同),摆成一排,你需要回答墨墨的提问.墨墨会像你发布如下指令: 1. Q L R代表询问你从第L支画笔 ...
- BZOJ 2120: 数颜色
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3623 Solved: 1396[Submit][Status][Discuss] ...
- BZOJ 2120: 数颜色 分块
2120: 数颜色 Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/problem.php? ...
- bzoj 2120 带修改莫队
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 7340 Solved: 2982[Submit][Status][Discuss] ...
随机推荐
- ZOJ3784 String of Infinity(AC自动机&&强连通分量)
题意:给你n个禁止串,然后你只能用字符表的前m个字符去写一个无限长的串,要求是不能包含禁止串,而且串在后面不能出现循环 比赛的时候想的是先建一个自动机,然后将自动机确定化,不能到达的状态全部弄出来.但 ...
- poj 3903 Stock Exchange(最长上升子序列,模版题)
题目 #include<stdio.h> //最长上升子序列 nlogn //入口参数:数组名+数组长度,类型不限,结构体类型可以通过重载运算符实现 //数组下标从1号开始. int bs ...
- PHP一些函数
函数不定参数: func_num_args // 获得参数个数 func_get_args // 获得参数数组 call_user_func('function_name', $parameter) ...
- Full GC有关问题学习分析(转载)
网站持久代引发Full GC问题分析 现状: Dragoon(监控系统)的日报显示trade_us_wholelsale(美国wholesale集群),日均Young GC次数25w次左右,应用暂停2 ...
- [你必须知道的.NET]第三十三回,深入.NET 4.0之,Lazy<T>点滴
发布日期:2009.10.29 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. 对象的创建方式,始终代表了软件工业的生产力方向,代表了先进软件技 ...
- [你必须知道的.NET]第三十回:.NET十年(下)
发布日期:2009.05.11 作者:Anytao © 2009 Anytao.com ,Anytao原创作品,转贴请注明作者和出处. /// <summary> /// 本文部分内容,已 ...
- win7桌面便签。自带的
新建WIN7下的桌面便签小程序 桌面—>新建 快捷方式-> 输入%windir%\system32\StikyNot.exe
- C# Socket 入门1(转)
1. 服务端程序 1 using System; 2 using System.Collections.Generic; 3 using System.Text; 4 using Syst ...
- interviewbit : Max Non Negative SubArrayBookmark Suggest Edit
Find out the maximum sub-array of non negative numbers from an array.The sub-array should be continu ...
- Struts2笔记——类型转换
概述 * 从一个HTML 表单到一个Action 对象, 类型转换是从字符串到非字符串. >HTTP 没有 “类型” 的概念. 每一项表单输入只可能是一个字符串或一个字符串数组. 在服 ...