[COCI2016-2017#5] Pareto
题目背景
二八定律提出:在任何一组东西中,最重要的只占其中一小部分,而其余尽管是多数,却是次要的。
例如,微软发现只需要修复 20 % 20\% 20% 的漏洞就能够减少 80 % 80\% 80% 的故障时间。再者,研究表明, 80 % 80\% 80% 的财富都掌握在 20 % 20\% 20% 的人的手中。
题目描述
给定 N N N 个银行客户的存款。求两个实数 A , B A,B A,B,使得 A % A\% A% 的客户恰好拥有存款总额的 B % B\% B%,且 B − A B-A B−A 最大。
输入格式
第一行,一个整数 N N N,表示银行客户的数量。
接下来的一行,共 N N N 个整数,依次表示每个客户的存款。
输出格式
第一行,输出所求的 A A A 值。
第二行,输出所求的 B B B 值。
保证对于最大的 B − A B-A B−A,最终答案唯一。
若输出与答案相差不超过 0.01 0.01 0.01,则算作答案正确。
样例 #1
样例输入 #1
2
100 200
样例输出 #1
50.0
66.66666666666666
样例 #2
样例输入 #2
8
100100 10 100 1000 1 10100
90100 100100
样例输出 #2
37.5
96.28172769816027
提示
【样例 1 解释】
不难发现,存款金额为 200 200 200 的客户拥有存款总额的约 66.666667 % 66.666667\% 66.666667%。
【数据规模与约定】
对于 100 % 100\% 100% 的数据, 1 ≤ N ≤ 3 × 1 0 5 1 \le N \le 3 \times 10^5 1≤N≤3×105,所有客户的存款金额都是不超过 1 0 8 10^8 108 的非负整数。
【提示与说明】
题目译自 COCI 2016-2017 CONTEST #5 T2 Pareto。
本题分值按 COCI 原题设置,满分 80 80 80。
Scratch实现
后续
接下来我会不断用scratch来实现信奥比赛中的算法题、Scratch考级编程题实现、白名单赛事考题实现,感兴趣的请关注,我后续将继续分享相关内容