zoukankan      html  css  js  c++  java
  • 排队打水

    题目描述

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

    输入

    第一行为n(n≤1000);
    第二行n个整数,表示每人的接水时间T1,T2,…,Tn(0≤Ti≤1000)。

    输出

    输出最小的平均等待时间(输出结果精确到小数点后两位)。

    样例输入

    10
    56 12 1 99 1000 234 33 55 99 812
    

    样例输出

    291.90
    贪心问题,按照从小到大排序即可。
    平均等待时间是每个人等待的时间之和除以n
    注意double类型
     1 #include <bits/stdc++.h>
     2  
     3 using namespace std;
     4  
     5 typedef long long ll;
     6 int n,a[10005];
     7 int main()
     8 {
     9 //    freopen("in.txt","r",stdin);
    10     scanf("%d",&n);
    11     for(int i=1;i<=n;i++)
    12         scanf("%d",&a[i]);
    13     sort(a+1,a+1+n);
    14     double p=0;
    15     for(int i=1;i<=n;i++)
    16     {
    17         p+=(n-i)*a[i];
    18     }
    19     double ans=p/(n*1.0);
    20     printf("%.2lf
    ",ans);
    21     return 0;
    22 }
    View Code
    如有错误,请指正,感谢!
  • 相关阅读:
    HQL语句中类的别名语法以及作用?
    C#面向对象
    c#异步编程一
    c#接口
    c#Socket通信基本使用
    c#FTP基本使用
    c#XML的基本使用
    c#装箱与拆箱
    c#数组与集合
    c#中for与foreach的使用
  • 原文地址:https://www.cnblogs.com/scott527407973/p/9415785.html
Copyright © 2011-2022 走看看