博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
排队接水
阅读量:6421 次
发布时间:2019-06-23

本文共 830 字,大约阅读时间需要 2 分钟。

题目描述

有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小。

输入输出格式

输入格式:

 

输入文件共两行,第一行为n;第二行分别表示第1个人到第n个人每人的接水时间T1,T2,…,Tn,每个数据之间有1个空格。

 

输出格式:

 

输出文件有两行,第一行为一种排队顺序,即1到n的一种排列;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。

 

输入输出样例

输入样例#1:
10 56 12 1 99 1000 234 33 55 99 812
输出样例#1:
3 2 7 8 1 4 9 6 10 5291.90

说明

n<=1000

ti<=1e6,不保证ti不重复

 

 

代码

#include
#include
#include
#include
#include
using namespace std;int n; long long sum;double ans;struct nn{ int s,x;}a[1001];int cmp(nn a,nn b){ return a.s

 

思路:

这个题的本质上是找到一个队列使得加权累加的总时间和最小。 要是他累加和最小,那就让接水多的后接,接水少的先接首先的第一步是要排序。然后接下来是累加最短等待时间和。 最后求出平均值

 

注意:

1.  进行排序时,使用结构体排序(因为你要输出顺序)

2. 累加时,注意:第一个人不等,第二个等第一个,第三个等第一个和第二个。。。。。。。

3. 求平均数时,除n;

转载于:https://www.cnblogs.com/z360/p/6711122.html

你可能感兴趣的文章
Java面试笔记整理4
查看>>
什么是REST架构(转)
查看>>
搭建 Android 开发环境,初试HelloWorld (win7) (下) (转)
查看>>
混合高斯模型(GMM)推导及实现
查看>>
cocos2d-js 3.0rc0加载游戏引擎时长时间黑屏
查看>>
搜索专题练习
查看>>
Django-MTV模型
查看>>
IE9 Windows7 x64
查看>>
xcode 工具栏中放大镜的替换的简单说明
查看>>
C# 语言规范_版本5.0 (第11章 结构)
查看>>
租用游艇
查看>>
java 集合list遍历时删除元素
查看>>
【PHP原生】两个日期间的相关计算
查看>>
partial关键字的含义
查看>>
虚拟DOM
查看>>
date命令详解
查看>>
Spring MVC 返回Json数据环境记录
查看>>
浅谈C语言中的内存分配
查看>>
方法覆盖
查看>>
怎样简单灵活地将DataTable中的数据赋值给model
查看>>