P15849 [NOISG 2026 Finals] 三只迅猛龙

前言

场上最后10min过了这道题,把我救了回来

solution

首先,我们需要注意到,如果 \([1,n]\) 这个区间不是合法的,那么最优区间的最常见迅猛龙颜色的频率与最不常见迅猛龙颜色的频率之间的差值一定等于 \(k\) ,因为如果小于的话我再多选 一个差值一定还是 \(\leq k\) 的。

于是可以直接枚举出现次数最多和出现次数最少的是哪种迅猛龙,然后维护两个值: \(s1\)\(s2\)\(s1\) 表示出现次数最多的迅猛龙的出现次数和出现次数最少的迅猛龙的出现次数差值,\(s2\) 表示出现次数最多的和出现次数第二多的的差值。

于是当前位置 \(i\) 的最优的合法 \(l\)\(s1_l\) 一定是 \(s1_i - k\)\(s2_l\) 要在 \([s2_i-k,s2_i]\) 这个区间内,于是直接用一个动态开点线段树维护区间最小值即可,时间复杂度 \(O(6n \log_n)\)

posted @ 2026-03-26 20:54  Xdik  阅读(4)  评论(0)    收藏  举报