快乐的一天从AC开始 | 20210702 | P4113

题目链接

AC代码

其实就是区间内出现次数超过两次的颜色数量。

发现没有强制在线,想到莫队,但是看了眼数据范围,2e6的\(O(n \sqrt n)\)估计够呛。

然后换一种离线方法,试着将询问挂到右端点。此时,从左至右遍历数组,对于颜色\(c\),记录上上次出现的位置以及上一次出现的位置,分别记为\(lst1_c\)以及\(lst2_c\),那么,对于右端点为\(r\)的询问,其答案就等于遍历至\(r\)时,\(lst1_c \ge l\)的颜色数量。如果维护好\(lst1\),借助树状数组(单点加,区间求和)就可以在\(O(n \log n)\)内解决这题。

bonus:有没有在线的做法?

posted @ 2021-07-02 10:47  _Backl1ght  阅读(36)  评论(0编辑  收藏  举报