【BZOJ】2453: 维护队列【BZOJ】2120: 数颜色 二分+分块(暴力能A)
先说正解:把所有相同的数相成一个链在每一个区间里的种数就是不同链的链头,那么记录每个数的上个相同数所在位置,那么只要找出l到r之间前驱值在l之前的数的个数就可以了
本人打的暴力,有一个小技巧,用char代替int水题,用int里的值不同来去掉memset
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<map>
#include<cmath>
#include<iostream>
#define MAXN 10100
using namespace std;
char ex[][][];
map<int,int>mp;
int a[MAXN],pos[MAXN],t,len,n,m,sz,f[][],now[];
inline void pre(int x)
{
int ans=;
for(int i=(x-)*len+;i<=n;i++)
{
if(ex[x][pos[i]][a[i]])
{
for(int j=pos[i];j<=t;j++)
ex[x][j][a[i]]++;
continue;
}
for(int j=pos[i];j<=t;j++)
{
ex[x][j][a[i]]=;
f[x][j]++;
}
}
}
inline void work1(int ohou)
{
int l,r;
scanf("%d%d",&l,&r);
int z=pos[l],y=pos[r];
int ans=;
if(pos[r]-pos[l]<=)
{
for(int i=l;i<=r;i++)
{
if(now[a[i]]==ohou)continue;
ans++;
now[a[i]]=ohou;
}
}
else
{
z++,y--;
ans=f[z][y];
int zzh=pos[l]*len;
for(int i=l;i<=zzh;i++)
{
if(now[a[i]]==ohou||ex[z][y][a[i]])continue;
now[a[i]]=ohou;
ans++;
}
for(int i=(pos[r]-)*len+;i<=r;i++)
{
if(now[a[i]]==ohou||ex[z][y][a[i]])continue;
now[a[i]]=ohou;
ans++;
}
}
printf("%d\n",ans);
}
inline void work2()
{
int po,to;
scanf("%d%d",&po,&to);
if(mp[to]==)
mp[to]=++sz;
to=mp[to];
int x0=a[po];
a[po]=to;
int p1=pos[po];
for(int i=p1;i>;i--)
for(int j=p1;j<=t;j++)
{
ex[i][j][x0]--;
if(ex[i][j][x0]==)f[i][j]--;
ex[i][j][to]++;
if(ex[i][j][to]==)f[i][j]++;
}
}
int main()
{
scanf("%d%d",&n,&m);
len=(int)sqrt(n+0.5);
for(int i=;i<=n;i++)
{
scanf("%d",&a[i]);
if(mp[a[i]]==)
mp[a[i]]=++sz;
a[i]=mp[a[i]];
pos[i]=(i-)/len+;
}
t=pos[n];
for(int i=;i<=t;i++)
pre(i);
while(m--)
{
char s[];
scanf("%s",s);
if(s[]=='Q')work1(m);
else work2();
}
return ;
}
【BZOJ】2453: 维护队列【BZOJ】2120: 数颜色 二分+分块(暴力能A)的更多相关文章
- Bzoj 2453: 维护队列 && Bzoj 2120: 数颜色 分块,bitset
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 578 Solved: 247[Submit][Status][Discuss] ...
- bzoj 2453 : 维护队列 带修莫队
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 952 Solved: 432[Submit][Status][Discuss] ...
- bzoj 2453: 维护队列
2453: 维护队列 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 1079 Solved: 503[Submit][Status][Discuss ...
- BZOJ 2453 维护队列 | 分块
题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2453 题解: 考虑维护每个位置的颜色上一次出现在哪里,计为pre[i],在询问l到r的时候, ...
- BZOJ.2453.维护队列([模板]带修改莫队)
题目链接 带修改莫队: 普通莫队的扩展,依旧从[l,r,t]怎么转移到[l+1,r,t],[l,r+1,t],[l,r,t+1]去考虑 对于当前所在的区间维护一个vis[l~r]=1,在修改值时根据是 ...
- Bzoj 2120: 数颜色 && 2453: 维护队列 莫队,分块,bitset
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 2645 Solved: 1039[Submit][Status][Discuss] ...
- 【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: 数颜色
2120: 数颜色 Time Limit: 6 Sec Memory Limit: 259 MBSubmit: 3623 Solved: 1396[Submit][Status][Discuss] ...
随机推荐
- git的基本操作总结
参考链接 https://blog.csdn.net/u012661010/article/details/73433872 https://blog.csdn.net/shj_php/article ...
- c++ map的使用方法
1.头文件:#include<map> 2.定义:map<typename1,typename2> mp 注:字符串数组只能用string而不能使用char[] 3.访问方式: ...
- 2.PostgreSQL安装详细步骤(windows)【转】
感谢 Junn9527 PostgreSQL安装:一.windows下安装过程安装介质:postgresql-9.1.3-1-windows.exe(46M),安装过程非常简单,过程如下:1.开始安装 ...
- shell eval命令使用
eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令. 该命令适用于那些一次扫描无法实现其功能的变量.该命令对变量进行两次扫描. 这些需要进行两次扫描的变量有时被称为复杂变量.不过这些变量本 ...
- 实用脚本 2 -- Linux下定时执行脚本
今天学习Linux下定时执行脚本,看到一篇讲解比较好的文章,特此拿来分享. 原文链接:http://www.blogjava.net/decode360/archive/2009/09/18/2877 ...
- Thymeleaf 常用th标签基础整理
(一)Thymeleaf 是个什么? 简单说, Thymeleaf 是一个跟 Velocity.FreeMarker 类似的模板引擎,它可以完全替代 JSP .相较与其他的模板引擎,它有如下 ...
- Unity3d工具方法小集
1.获取垂直水平方向上的输入: float moveHorizontal = Input.GetAxis("Horizontal"); float moveVertical = I ...
- 获取.jar文件运行时所处的路径
在Windows控制台中运行.jar文件时的两种环境: (1)控制台当前所在目录是.jar文件所在的目录 (2)控制台当前所在目录不是.jar文件所在的目录 我的期望: 我希望在上述两种环境下均可以得 ...
- 命令行下对apk签名
l创建key,需要用到keytool.exe (位于jdk安装目录\bin目录下),使用产生的key对apk签名用到的是jarsigner.exe (位于jdk安装目录\bin目录下),把上两个软件所 ...
- Qt 实现脉搏检测-1-心跳曲线部分
最新的想法就是写一个显示脉搏的东西,主要就是通过串口读取硬件(检测心跳的)传来的数据,在显示一下. 先实现画心跳曲线 如下图 先来电干货, 首先,在这个代码中,第一次用到了list这个东东 所以,关于 ...