CF1163B2 Cat Party (Hard Edition) 题解

发布时间 2023-12-04 19:47:34作者: ShawyYum

题意:

思路:

对于满足条件的区间 $ [1,x] $ ,有如下三种情况:

$ 1 $ . 所有元素出现次数都为 $ 1 $ ;

$ 2 $ . 除了一个元素出现次数为 $ 1 $ 之外,其余元素出现次数都相等;

$ 3 $ . 除了一个出现次数比其他数的出现次数多 $ 1 $ 的元素之外,其余元素出现次数都相等。

在线处理:

设 $ cnt_i $ 表示数字 $ i $ 的出现次数, $ maxv $ 表示所有数字的出现次数的最大值, $ num_j $ 表示“出现次数 $ j $ ”的出现次数, $ ans $ 表示最终答案。

$ for i : 1 \to n $ 对每个输入 $ x $ 进行处理: $ num_{cnt_x} = num_{cnt_x} - 1 $ , $ cnt_x = cnt_x + 1 $ , $ num_{cnt_x} = num_{cnt_x} + 1 $ , $ maxv = max(maxv,num_{cnt_x}) $ 。

当 $ maxv = 1 $ 时,满足第一种情况,此时 $ ans = i $ ;

当 $ maxv * num_{maxv} = i - 1 $ 时,满足第二种情况,此时 $ ans = i $ ;

当 $ (maxv - 1) * (num_{maxv - 1} + 1) = i - 1 $ 时,满足第三种情况,此时 $ ans = i $ 。