传送门
这题数据有点吓人,考试时搞了一个多小时发现读错了题就知道自己没救了,匆忙之中写了60分暴力,结果
30
30
30分直接
R
E
RE
RE,还有
30
30
30分
T
L
E
TLE
TLE了,弄得我不知道怎么是好,下来听了听题解,发现其实并没有我想的那么复杂。
那么我们首先要算算效率,如果我们跑个均摊
O
(
n
2
)
O(n^2)
O(n2)的算法似乎刚好卡住
2
s
2s
2s时限,于是再仔细思考一下,如果我们维护一个
x
x
x和
y
y
y的区间的出现次数的前缀和,显然如果两个前缀和的值相同的话,这两个前缀和之间形成的区间肯定
x
x
x和
y
y
y出现的次数是相同的,这样可以修改答案。但我们再细算一下,对于每次询问,我们要关心的只是
x
x
x和
y
y
y的位置,而其他位置的前缀和显然可以对之前的前缀和进行继承。所以这个地方一个小技巧,我们先将
a
a
a数组离散化,然后用动态数组
v
e
c
t
o
r
vector
vector来记录每种数的下标。直接在动态数组中跳下标统计答案就行了。其他细节详见代码。
代码