有关数据

\(\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\) 的出现次数。这就十分容易统计了。

于是这道题就轻松了许多。

ABC 293 G 题题解 —— 莫队的更多相关文章

  1. 【Luogu】P3709大爷的字符串题(莫队算法)

    题目链接 语文题啊…… 看题解发现是让求区间中最多的数的个数,于是果断理解了一会题解……莫队套上完事. sum[i]表示i这个数出现的次数,cnt[i]表示出现i次的数有几个,然后乱搞搞……就好了 # ...

  2. 小Z的袜子(题解)(莫队)

    小Z的袜子(题解)(莫队) Junlier良心莫队 题目 luoguP1494 [国家集训队]小Z的袜子 code #include<bits/stdc++.h> #define lst ...

  3. 小B的询问(题解)(莫队)

    小B的询问(题解)(莫队) Junlier良心莫队 题目 luoguP2709 小B的询问 code #include<bits/stdc++.h> #define lst long lo ...

  4. 洛谷P3709 大爷的字符串题(莫队)

    题目背景 在那遥远的西南有一所学校 /*被和谐部分*/ 然后去参加该省省选虐场 然后某蒟蒻不会做,所以也出了一个字符串题: 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区 ...

  5. luogu 3709 大爷的字符串题 构造 莫队 区间众数

    题目链接 题目描述 给你一个字符串a,每次询问一段区间的贡献 贡献定义: 每次从这个区间中随机拿出一个字符\(x\),然后把\(x\)从这个区间中删除,你要维护一个集合S 如果\(S\)为空,你\(r ...

  6. [题解] Atcoder Beginner Contest ABC 270 G Ex 题解

    点我看题 G - Sequence in mod P 稍微观察一下就会发现,进行x次操作后的结果是\(A^xS+(1+\cdots +A^{x-1})B\).如果没有右边那一坨关于B的东西,那我们要求 ...

  7. Codeforces Round #744 (Div. 3) G题题解

    淦,最后一道题没写出来,...还是我太菜了,不过这个题确实比较有趣. G. Minimal Coverage 简化题意:就是你处在坐标轴的0点上,给你一个序列\(a_i\),每次你可以选择向左走\(a ...

  8. SWPU-ACM集训队周赛之组队赛(3-11)G题题解

    点这里去做题 水水水水水,不难发现如下表 t 1 2 3 4 v 1 3 5 7 s 1 4 9 16 明显s=t*t 题目中对10000取模即取后四位,即对1000取余 #include<st ...

  9. P3709 大爷的字符串题 脑子+莫队

    简化题意:区间众数出现次数??? 为什么?原因是,贪心的想,我们要划分成尽量少的严格递增序列,这样rp掉的最少. 设区间众数出现次数为 \(x\) ,那我们至少要分成 \(x\) 段严格上升序列. # ...

  10. 福建工程学院第十四届ACM校赛G题题解

    外传:编剧说了不玩游戏不行 题意: 有n个石堆,我每次只能从某一堆中取偶数个石子,你取奇数个,我先手,先不能操作的人输.问最后谁能赢. 思路: 这个题仔细想想,就发现,取奇数的人有巨大的优势,因为假设 ...

随机推荐

  1. P4516 [JSOI2018] 潜入行动 题解

    题意: 给定一棵无根树,要求给树上 \(k\) 个点标记,使得所有点都至少与一个被标记的点相邻.(注意自己被标记不代表与标记相邻) 思路 考虑树形DP. 套路地设 \(f_{u,i,0/1,0/1}\ ...

  2. Flex布局-子项

    弹性盒子是一种用于 按行 或 按列的一维布局方法. 元素可以膨胀以填充额外的空间, 也可以 收缩 以适应更小的空间. flex 容器项重点 只是用表格进行排版而已, 横向内容无关联哈, 只是简要回忆一 ...

  3. GIM: 调用AI自动生成git提交消息的工具

    GIM - Git Intelligence Message,是根据文件变更内容,自动请求用户配置的AI服务,生成提交消息的工具. 代码托管地址 https://github.com/davelet/ ...

  4. STM32在使用Clion平台开发时调试失败 SystemClock_Config 返回 HAL_ERROR

    问题记录 在尝试使用Clion在STM32平台上开发调试时,需要通过OpenOCD结合ST-Link等调试器进行烧录和调试.但通过STM32CubeMX生成代码后,发现出现以下现象: 程序能够正常编译 ...

  5. Linux常用命令介绍-文档编辑

    cat命令 - 在终端设备上显示文件内容 cat命令来自英文词组concatenate files and print的缩写,其功能是在终端设备上显示文件内容.在Linux系统中有很多用于查看文件内容 ...

  6. [2025五一lyyz集训] 数论+练习赛

    一如既往地在 \(lyyz\) 集训. 5.1 今天是练习赛,但感觉今天不适合打比赛,交几道挂几道,被教练一顿凶. 练习赛结果:\(100+26+62+22\) 其中有道 \(DP\) 不错: C密码 ...

  7. http协议中长连接和短连接介绍

      TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,客户端与服务器端之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时可以释放这个连接.连接的建立依靠"三次握手& ...

  8. manim边做边学--参数化曲线

    在数学可视化领域,参数方程提供了一种灵活描述曲线的方式. Manim库中的ParametricFunction类正是为此而生,它允许用户通过参数方程创建各种复杂的二维和三维曲线. Parametric ...

  9. VS下进行CUDA编译时error MSB3721相关的原因之一

    报错:"1>D:\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomization ...

  10. java多线程压力测试接口

    1.定义一个controller,里面写个测试方法,用于postman测试 1 @GetMapping("/toTestThread") 2 public void demosen ...