[THUPC 2023 初赛] 众数
题目描述
你有若干个 [ 1 , n ] [1,n] [1,n] 内的正整数:对于 1 ≤ i ≤ n 1 \le i \le n 1≤i≤n,你有 a i a_i ai 个整数 i i i。设 S = ∑ i = 1 n a i S = \sum_{i=1}^n a_i S=∑i=1nai。
对于一个序列 p 1 , p 2 , ⋯ , p l p_1,p_2,\cdots,p_l p1,p2,⋯,pl,定义其众数 maj ( p 1 , p 2 , ⋯ , p l ) \text{maj}(p_1,p_2,\cdots,p_l) maj(p1,p2,⋯,pl) 为出现次数最多的数。若有多个数出现次数最多,则其中最大的数为其众数。
现在你需要把这 S S S 个数排成一个序列 b 1 , b 2 , ⋯ , b S b_1,b_2,\cdots,b_S b1,b2,⋯,bS,使得 ∑ i = 1 S maj ( b 1 , b 2 , ⋯ , b i ) \sum_{i=1}^S \text{maj}(b_1,b_2,\cdots,b_i) ∑i=1Smaj(b1,b2,⋯,bi) 最大。输出该最大值。
输入格式
第一行一个整数 n n n,表示值域。
接下来一行 n n n 个正整数 a 1 , a 2 , ⋯ , a n a_1,a_2,\cdots,a_n a1,a2,⋯,an,表示每种数的个数。
输出格式
输出一行一个正整数表示 ∑ i = 1 S maj ( b 1 , b 2 , ⋯ , b i ) \sum_{i=1}^S \text{maj}(b_1,b_2,\cdots,b_i) ∑i=1Smaj(b1,b2,⋯,bi) 的最大值。
样例 #1
样例输入 #1
3
1 3 2
样例输出 #1
17
提示
样例解释 1
一个达到最大值的序列为 ( 3 , 2 , 3 , 1 , 2 , 2 ) (3,2,3,1,2,2) (3,2,3,1,2,2)。
数据范围
对于所有测试数据, 1 ≤ n ≤ 1 0 5 1 \le n \leq 10^5 1≤n≤105, 1 ≤ a 1 , a 2 , ⋯ , a n ≤ 1 0 5 1 \le a_1,a_2,\cdots,a_n \le 10^5 1≤a1,a2,⋯,an≤105。
题目来源
来自 2023 清华大学学生程序设计竞赛暨高校邀请赛(THUPC2023)初赛。
题解等资源可在 https://github.com/THUSAAC/THUPC2023-Pre 查看。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容