Loading

ABC 293 G 题题解 —— 莫队

有关数据

\(\texttt{Time Limit}\) \(\texttt{Memory Limit}\) \(\texttt{Difficulty}\)
\(\color{green}{\texttt{3 sec}}\) \(\color{red}{\texttt{1024 MB}}\) \(\color{blue}{\texttt{1753}}\)

题目大意

你有一个长度为 \(n\) 的序列 \(\{a_1,a_2,a_3,\dots,a_n\}\)
现在给你 \(q\) 次询问,对第 \(p\) 次询问有 \((l_p, r_p)\)
输出三元组 \((i,j,k)\) 的数量,使得:

  • \(l_p \leq i < j < k \leq r_p\)
  • \(a_i = a_j = a_k\)

数据范围

  • \(1 \leq n \leq 2 \times 10^5\)
  • \(1 \leq q \leq 2 \times 10^5\)
  • \(1 \leq a_i \leq 2 \times 10^5\)
  • \(1 \leq l_p, r_p \leq 2 \times 10^5\)

题目分析

这道题是一道莫队的板子题。(弘扬中国文化是吧)
如果不会莫队的可以左转学习
由于这题没有强制在线,所以我们可以考虑莫队。
这道题目需要求三元组的范围使得这三项在区间里且三项相等。在离线操作之后,我们就只需知道端点向前或者向后移动时对答案的影响即可。如果区间左端点新添加了一个数 \(a_c\),那么答案就会 \(+=\) 包含 \(c\) 的三元组,也就是 \((c, ?, ?)\),设 \(x\)\(a_c\) 的出现次数,则贡献为 \(\frac{(x-1)\times x}{2}\)。此时,问题便转化成了求区间内 \(a_c\) 的出现次数。这就十分容易统计了。
于是这道题就轻松了许多。

posted @ 2023-03-14 12:52  DE_aemmprty  阅读(44)  评论(2)    收藏  举报