题目大意
每个人都有接水时间和下标,算出接水的最小时间,输出接水顺序的下标和最少时间的平均时间
考纲知识点
输入输出、分支结构、算术运算符、循环结构、结构体基础、结构体排序、自定义函数、贪心算法、基础数据类型、变量的定义以及使用
数据范围
111 ≤≤≤ nnn ≤≤≤ 100010001000
111 ≤≤≤ TiT_iTi ≤≤≤ 100010001000
解题思路
要想使最后的每个人打水的时间最少,就需要让打水时间短的人先打水
用结构体记录下每个人的打水时间和下标,定义一个范围为 101010101010 的结构体数组
输入结构体中每个人的打水时间,下标就是目前的 iii
对数组进行升序排序:
1. 两个人的打水时间不同,按照打水时间从小到大排序
2. 两个人的打水时间相同,按照下标从小到大排序
排序后从小到大依次都是接水时间短到接水时间长的人
先输出每个人的下标,用 sumsumsum 记录下最终的时间,公式如下:
ai.t×(n−i)a_i.t\times(n-i) ai .t×(n−i)
最后换行,保留两位小数输出平均时间
参考程序
时间复杂度
O(nlogn)O(n \log n)O(nlogn)(线性对数时间复杂度)
空间复杂度
O(n)O(n)O(n)(线性空间复杂度)