排队接水(贪心算法)
题目描述
有 nn 个人在一个水龙头前排队接水,假如每个人接水的时间为 T_iTi,请编程找出这 nn 个人排队的一种顺序,使得 nn 个人的平均等待时间最小。
输入格式
第一行为一个整数 nn。
第二行 nn 个整数,第 ii 个整数 T_iTi 表示第 ii 个人的等待时间 T_iTi。
输出格式
输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。
输入输出样例
输入 #1复制
10 56 12 1 99 1000 234 33 55 99 812
输出 #1复制
3 2 7 8 1 4 9 6 10 5 291.90
说明/提示
n≤1000,ti≤106,不保证 t_iti 不重复。
当 t_iti 重复时,按照输入顺序即可(sort 是可以的)
解题思路:
给出了每个人的接水时间,肯定是用时最少的人排在最前面大家浪费的时间最少,有个小细节就是当前面的人接水的时候后面的人都在等,也就是说算平均时间的时候也要加上,d=d+a[i]*(b-i-1)就是排在a[i]后的人都要等他接完下一个才能接。
#include<bits/stdc++.h>
using namespace std;
int a[1010];
int c[1010];
int main(void)
{int b;double d=0.0;cin>>b;memset(c,0,sizeof(b));for(int i=0;i<b;i++){cin>>a[i];c[i]=a[i];//再开一个数组排完序后输出下标表示是第几个人}sort(a,a+b);for(int i=0;i<b;i++){for(int j=0;j<b;j++){if(a[i]==c[j]){cout<<j+1<<" ";c[j]=0;}}}for(int i=0;i<b;i++){d=d+a[i]*(b-i-1);//这个就是算总共浪费的时间了}cout<<endl;printf("%.2lf\n",d/b);return 0;
}
排队接水(贪心算法)相关推荐
- [排序不等式] 排队打水(排序不等式+贪心)
文章目录 0. 前言 1. 排序不等式+贪心 0. 前言 经典的排序不等式问题,也是一个简单的小学数奥问题. 1. 排序不等式+贪心 913. 排队打水 贪心思路: 让最墨迹的人最后打水,即从小到大排 ...
- 信息学奥赛第九节 —— 贪心算法(需要安排几位师傅加工零件 + 排队打水问题)
贪心算法的特点 对于问题求解时,总是做出在当前来看是最好的选择的策略,即贪心算法不从整体来考虑问题.贪心算法与排序.高精度.背包等算法不同,没有一个特定的模板来表达贪心算法的过程. 贪心的步骤 抽象出 ...
- P1223 排队接水(贪心算法)
题目描述 有 nn 个人在一个水龙头前排队接水,假如每个人接水的时间为 T_iTi,请编程找出这 nn 个人排队的一种顺序,使得 nn 个人的平均等待时间最小. 输入格式 第一行为一个整数 nn. ...
- 17行代码AC_51Nod - 2133 排队接水(贪心)
励志用少的代码做高效表达 贪心算法模板题 贪心算法简单来讲即自顶向下,求解出每个子最优解,且每个子问题不会对下一个问题产生影响 题意:n个人排队接水,问如何排序才能使总等待时间最短,(正在接水的人和没 ...
- 贪心算法之柠檬水java
贪心算法的基本思想: 贪心算法是指在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,它所做出的仅是在某种意义上的局部最优解.用局部解构造全局解,即从问题的某一个初始解逐 ...
- 贪心算法:860.柠檬水找零
题目描述: 在柠檬水摊上,每一杯柠檬水的售价为 5 美元.顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯. 每位顾客只买一杯柠檬水,然后向你付 5 美元.10 美元或 20 美元 ...
- 算法提高 排队打水问题 无聊刷个水题
算法提高 排队打水问题 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 有n个人排队到r个水龙头去打水,他们装满水桶的时间t1.t2---..tn为整数且各不相等,应如何安排他们的打 ...
- Suzy想吃烤蛋挞了Day35 | 贪心算法进行时:860. 柠檬水找零,406. 根据身高重建队列,452. 用最少数量的箭引爆气球
860. 柠檬水找零 solution 不要漏掉的一种情况是:如果收到了20,可以找10+5,或者5+5+5 class Solution:def lemonadeChange(self, bills ...
- java排队算法_贪心算法-排队问题-JAVA
自己最近在学一些算法,试着把网上的贪心算法的例题编出来,JAVA版. [题目描述] 在一个医院B 超室,有n个人要做不同身体部位的B超,已知每个人需要处理的时间为ti,(0 输入数据:第1行一个正整数 ...
最新文章
- KMP算法的实现以及改进
- java中多态_Java中多态的理解
- 非对称性密钥加密 java 实例_JAVA实现非对称加密
- Spring vs Guice:重要的一个关键区别
- Cowrie蜜罐的部署(ubt亲测)
- Application Virtualization 4.5 部署之(二)
- Java内存运行机制
- Linux静态库与动态库
- vue中获取输入框中得到值_如何获取vue input的值
- Bitmap和Drawable的互相转换
- Tomcat8中URI不支持{}|等特殊字符解决方案
- Python访问MySQL数据库速度慢解决方法
- 分布式存储之Ceph软件安装及使用
- StackPanel与Grid交叉使用
- VS2010过期密钥
- 非功能需求分析--web开发课内实例
- 超详细的LSA内容解析及SPF算法分析,一看就懂
- 4.龙芯2k1000 系统制作及安装
- 1920x1080平板 android,高清是王道!1080P分辨率屏幕平板大搜罗
- c语言rand再哪个头文件里,c语言下rand函数在哪个头文件中