题意:
思路:
对于满足条件的区间 $ [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 $ 。
标签:cnt,CF1163B2,题解,Hard,maxv,次数,num,ans,出现 From: https://www.cnblogs.com/ShawyYum/p/17875778.html