#P2464. 郁闷的小 J(Depressed Little J)

0
    ID: 8473 传统题 1000ms 128MiB 尝试: 0 已通过: 0 难度: (无) 上传者: 标签>P2464莫队算法平衡树动态开点线段树二分查找CSP-S

郁闷的小 J(Depressed Little J)

郁闷的小 J(Depressed Little J)

题目描述

小 J 是国家图书馆的一位图书管理员,他的工作是管理一个巨大的书架。虽然他很能吃苦耐劳,但是由于这个书架十分巨大,所以他的工作效率总是很低,以致他面临着被解雇的危险,这也正是他所郁闷的。

具体说来,书架由 NN 个书位组成,编号从 11 到 NN。每个书位放着一本书,每本书有一个特定的编码。

小 J 的工作有两类:

  1. 图书馆经常购置新书,而书架任意时刻都是满的,所以只得将某位置的书拿掉并换成新购的书。

  2. 小 J 需要回答顾客的查询,顾客会询问某一段连续的书位中某一特定编码的书有多少本。

例如,共 55 个书位,开始时书位上的书编码为 1,2,3,4,51, 2, 3, 4, 5。

一位顾客询问书位 11 到书位 33 中编码为“22”的书共多少本,得到的回答为:11。

一位顾客询问书位 11 到书位 33 中编码为“11”的书共多少本,得到的回答为:11。

此时,图书馆购进一本编码为“11”的书,并将它放到 22 号书位。

一位顾客询问书位 11 到书位 33 中编码为“22”的书共多少本,得到的回答为:00。

一位顾客询问书位 11 到书位 33 中编码为“11”的书共多少本,得到的回答为:22。

……

你的任务是写一个程序来回答每个顾客的询问。

输入格式

第一行两个整数 N,MN, M,表示一共 NN 个书位,MM 个操作。

接下来一行共 NN 个整数 A1,A2,…,ANA_1, A_2, \ldots , A_N,AiA_i 表示开始时位置 ii 上的书的编码。

接下来 MM 行,每行表示一次操作,每行开头一个字符。

若字符为 C,表示图书馆购进新书,后接两个整数 A,PA, P(1≤A≤N1 \le A \le N),表示这本书被放在位置 AA 上,以及这本书的编码为 PP。

若字符为 Q,表示一个顾客的查询,后接三个整数 A,B,KA, B, K(1≤A≤B≤N1 \le A \le B \le N),表示查询从第 AA 书位到第 BB 书位(包含 AA 和 BB)中编码为 KK 的书共多少本。

输出格式

对每一个顾客的查询,输出一个整数,表示顾客所要查询的结果。

样例输入 #1

5 5
1 2 3 4 5
Q 1 3 2
Q 1 3 1
C 2 1
Q 1 3 2
Q 1 3 1

样例输出 #1

1
1
0
2

数据范围

对于 40%40 \% 的数据,1≤N,M≤50001 \le N, M \le 5000。

对于 100%100 \% 的数据,1≤N,M≤1051 \le N, M \le {10}^5。

对于 100%100 \% 的数据,所有出现的书的编码为不大于 231−12^{31} - 1 的正数。

知识点与难度

本题涉及的知识点从属于 CSP-S,难度(CF Rating):2000。


测试点分布

Subtask 分值 测试点编号 说明
0 10 1 样例
1 20 2~7 小规模 N,M≤5000 / 查询从未出现过的编码输出0 / 替换为相同编码
2 15 8~11 Hack: 编码值达 2^31-1 需离散化 / Hack: 全场同一种编码高频单点改与查
3 30 12~20 满规模 N=10^5, M=10^5 动态单点改与区间特定权值计数压力
4 25 21~25 随机购书与查询回归测试

出处:原题链接