博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
有关排序的贪心策略的一种证明思想
阅读量:4519 次
发布时间:2019-06-08

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

P1223 排队接水

题目描述

有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不重复

当ti重复时,按照输入顺序即可(sort是可以的)

分析:

思考一下可以发现应该按升序输出。

可以通过比较相邻两项交换前后的总开销变化来证明。

序列1:a1,a2,a3,a4....an

序列2:a1,a3,a2,a4...an

a1,a4...an的等待时间都不变。a2的等待时间多了a3,a3的等待时间少了a2,总时间变化为a3-a2.

当a3>a2时,交换后总时间变多了,因此不应该交换,故应该将序列升序排列。

转载于:https://www.cnblogs.com/loganlzj/p/10348588.html

你可能感兴趣的文章
运行osgdem找不到nvtt.dll,以及不能添加纹理图像的解决方法
查看>>
MySQL数值类型
查看>>
flex布局
查看>>
通过HBase Shell与HBase交互
查看>>
java基础--extension package commons(3)
查看>>
基于Lumisoft.NET组件的POP3邮件接收和删除操作
查看>>
JSON日期时间格式转换
查看>>
《计算机组成结构化方法》读书笔记-1
查看>>
jquery 导航固定的一个实例
查看>>
go语言调用cmd
查看>>
jQuery中.bind() .live() .delegate() .on()区别
查看>>
暑假第五测
查看>>
怪盗基德的滑翔翼
查看>>
Markdown 的离线编辑工具推荐:Sublime Text3 or Typora?我推荐Typora
查看>>
Mac添加或修改环境变量
查看>>
P2173 [ZJOI2012]网络
查看>>
P1484 种树
查看>>
CodeForces 566 D.Restructuring Company
查看>>
方格填数
查看>>
Flash Professional中运行ActionScript类
查看>>