CF2149G
给定大小为 \(n\) 的数组 \(a\) 及 \(q\) 组询问,每次给定 \([l,r]\),请输出 \(a_l \sim a_r\) 中出现次数 \(\ge c = \lfloor \frac{r - l + 1}{3} \rfloor + 1\) 的那些值。
这应该算个套路题,其实将 \(3\) 改成 \(k\) 时一样的(\(k\) 较小)。
建出一棵主席树,这样就知道了 \([l, r]\) 每个数的出现次数。每次查询在主席树上进行暴力 dfs,若某个区间 \([L, R]\) 总共的出现次数小于 \(c\) 直接返回。
这样做,主席树的每一层只会至多访问 \(O(k)\) 个节点(因为 \(kc > r - l + 1\)),时间复杂度:\(O((n + qk) \log V)\)。
浙公网安备 33010602011771号