先说正解:把所有相同的数相成一个链在每一个区间里的种数就是不同链的链头,那么记录每个数的上个相同数所在位置,那么只要找出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)的更多相关文章

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

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

  2. bzoj 2453 : 维护队列 带修莫队

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

  3. bzoj 2453: 维护队列

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

  4. BZOJ 2453 维护队列 | 分块

    题目: http://www.lydsy.com/JudgeOnline/problem.php?id=2453 题解: 考虑维护每个位置的颜色上一次出现在哪里,计为pre[i],在询问l到r的时候, ...

  5. BZOJ.2453.维护队列([模板]带修改莫队)

    题目链接 带修改莫队: 普通莫队的扩展,依旧从[l,r,t]怎么转移到[l+1,r,t],[l,r+1,t],[l,r,t+1]去考虑 对于当前所在的区间维护一个vis[l~r]=1,在修改值时根据是 ...

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

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

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

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

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

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

  9. BZOJ 2120: 数颜色

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

随机推荐

  1. Laravel POST请求API接口 使用validate表单验证返回欢迎页

    突然遇到的问题  就是使用Laravel进行开发API接口的时候  发现在表单验证不通过的时候返回了登录页 猜测问题应该是因为表单验证失败后进行了重定向导致的 因为返回状态码200 网上找了好久没找到 ...

  2. Yaf学习(二)----Yaf初体验

    1.hello world 1.1 用yaf输出hello world 1.首先配置host,nginx 2.host不用多说,指向虚拟机IP即可 1.2 重点说一下nginx (只说server块) ...

  3. SVM中的间隔最大化

    参考链接: 1.https://blog.csdn.net/TaiJi1985/article/details/75087742 2.李航<统计学习方法>7.1节 线性可分支持向量机与硬间 ...

  4. Mult

    public class MULT { public static void main(String args[]) { int k; for(int x=1;x<=9;x++) { for(i ...

  5. 多线程编程之Apue3rd_Chapter11之互斥锁_读写锁_自旋锁

    学习了apue3rd的第11章,主要讲的是多线程编程.因为线程共享进程的资源比如堆和全局变量,多线程编程最重要的是,使用各种锁进行线程同步. 线程编程首先要学习的三个函数如下: #include &l ...

  6. python--基本类型之数值

    Number(数字): 数字类型创建: a = 10b = ab = 20 pint('a : 'a)pint('b : 'b) 数据类型转换: int(x,[,base]) 将 x 转换为一个整数f ...

  7. PHP.39-扩展-锁机制解决并发-MySQL锁、PHP文件锁

    锁机制适用于高并发场景:高并发订单.秒杀…… apache压力测试 Mysql锁详解 语法 加锁:LOCK TABLE 表名1 READ|WRITE, 表名2 READ|WRITE ......... ...

  8. LeetCode:14. Longest Commen Prefix(Easy)

    1. 原题链接 https://leetcode.com/problems/longest-common-prefix/description/ 2. 题目要求 给定一个字符串数组,让你求出该数组中所 ...

  9. asp.net 模拟CURL调用微信公共平台API 上传下载多媒体文件接口

    FormItem类 public class FormItem { public string Name { get; set; } public ParamType ParamType { get; ...

  10. python统计日志小脚本

    日志格式如下: [ 2016-06-28T00:10:33-03:00 ] xxx.xx.xx.xxx /api/index/xxx/ ERR: code:400 message: params: c ...