收费站在哪里 在一条高速公路上,如果已知 n 座收费站的位置 x1,x2,… ,xn(不妨假设 0=x1 ≤ x2 ≤ … ≤ xn),就很容易算出一共有 n(n-1)/2 个距离的值。而比较困难的问题是,在收集了一大堆过路费发票后,我们筛选出了 n(n-1)/2 个距离的值,现在想知道收费站都分布在哪里? 当然对应一组距离值,可能有多组解,你只要输出任何一个即可。 时间限制:1000 内存限制:65536 输入 输入第一行给出正整数 m(< 50),即距离值的数量。 随后一行给出 m 个距离,均为 int 范围内的正整数。 输出 按坐标值升序列出所有收费站的位置,其中 x1=0。同行数字间以 1 个空格分隔,行首尾不得有多余空格。 注:题目保证所有坐标为 int 范围内的非负整数。 样例输入 10 3 4 6 8 1 3 5 2 4 2 样例输出 0 2 4 5 8
正确答案:参考程序(Python):m=int(input());d=sorted(map(int,input().split()),reverse=True);#算法:已知x1=0,用最大距离定x2=dmax;维护剩余距离集合,贪心取最大作为下一个站点并删除它与已知站点的距离差,重复直到空。给出算法思路。样例→0 2 4 5 8。核心:两两距离反推站点(回文删除)。
试卷来源:202503 青少年等级考试C/C++真题五级