1141. 贪心算法排队打水
题目描述
有n(n<=1000)个人在一个水龙头(领头)(领头)前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。
输入
输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。
输出
输出文件有两行,第一行为一种排队顺序,即1到n的一种排列(如果有多种方案,请输出字典序最小的方案);第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。
样例输入
10
56 12 1 99 1000 234 33 55 99 812
样例输出
3 2 7 8 1 4 9 6 10 5
532.00
先排序,将每人的等待时间相加,输出时求平均值
-
#include <bits/stdc .h>
-
using namespace std;
-
-
int n, a[100005][3];
-
float ans, s;
-
-
main()
-
{
-
scanf("%d", &n);
-
for (int i = 1; i <= n; i )
-
{
-
scanf("%d", &a[i][1]);
-
a[i][2] = i;
-
}
-
for (int i = 1; i <= n - 1; i )
-
{
-
for (int j = i 1; j <= n; j )
-
{
-
if (a[j][1] < a[i][1])
-
{
-
swap(a[i][1], a[j][1]);
-
swap(a[i][2], a[j][2]);
-
}
-
}
-
}
-
for (int i = 1; i <= n; i )
-
{
-
s = a[i][1];
-
ans = s;
-
}
-
for (int i = 1; i <= n; i )
-
printf("%d ", a[i][2]);
-
printf("\n");
-
printf("%.2f", ans / n);
-
}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhhagbak
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13