[ICPC 2024 Chengdu R] Recover Statistics题解
P15083 [ICPC 2024 Chengdu R] Recover Statistics
题目描述
你最近进行了一项关于大学生从宿舍到教学楼通勤时间的调查。你认为这项调查可以显著改善校园规划,使师生通勤更加便利。作为分析的一部分,你计算了 P50、P95 和 P99 通勤时间以支持你的结论。这里,Pxxx 通勤时间为 yyy 意味着在整个数据集中,恰好有 x%x\%x% 的通勤时间小于或等于 yyy。例如,集合 {1,1,4,5,1,4}\{1, 1, 4, 5, 1, 4\}{1,1,4,5,1,4} 的 P50 可以是 111、222 或 333,因为恰好有 6×50%=36 \times 50\% = 36×50%=3 个值小于或等于 111、222 或 333。然而,这些值不存在有效的 P95 或 P99,因为 6×95%6 \times 95\%6×95% 和 6×99%6 \times 99\%6×99% 不是整数。
不幸的是,出了点问题——你不小心删除了整个数据集。你唯一剩下的数据是通勤时间的 P50、P95 和 P99 值。由于你没有时间重新进行这项调查,你需要重建一个与所有 P50、P95 和 P99 值都匹配的数据集。
输入格式
输入包含三行。第一行包含一个整数 aaa,表示 P50 值。第二行包含一个整数 bbb,表示 P95 值。第三行包含一个整数 ccc,表示 P99 值。(1≤a<b<c<1091 \le a < b < c < 10^91≤a<b<c<109)
输出格式
输出两行。第一行应包含一个整数 nnn(100≤n≤105100 \le n \le 10^5100≤n≤105),表示数据集的长度。
第二行应包含 nnn 个整数 a1,a2,…,ana_1, a_2, \ldots, a_na1,a2,…,an(1≤ai≤1091 \le a_i \le 10^91≤ai≤109),表示重建的数据集。整数可以按任意顺序排列。任何满足要求的输出都将被视为正确。
输入输出样例 #1
输入 #1
50
95
99
输出 #1
100
1 2 ... 100
说明/提示
示例输出为显示方便省略了 333 到 999999(含)之间的值。在你的输出中,必须包含所有这些值。
请注意,本题中 Pxxx 值的定义与第 xxx 百分位数不同。
翻译由 DeepSeek V3 完成
思路
按题意构造即可。
代码见下
#include<bits/stdc++.h>
using namespace std;
long long a,b,c;
int main(){
cin>>a>>b>>c;
cout<<100<<endl;
for(int i=1;i<=50;i++){
cout<<a<<" ";
}
for(int i=51;i<=95;i++){
cout<<b<<" ";
}
for(int i=96;i<=99;i++){
cout<<c<<" ";
}
cout<<1000000000<<endl;
cout<<endl;
return 0;
}

浙公网安备 33010602011771号