题目描述

有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 5
291.90

说明

n<=1000

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

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

//手写

#include<bits/stdc++.h>
using namespace std;
int main()
{
    ;
    ],b[]={},c[]={};
    cin>>n;
    ;i<=n;i++) cin>>a[i],b[i]=a[i];
    sort(a+,a++n);
    ;i<=n;i++)
    {
        ;j<=n;j++){
            if(a[i]==b[j])
            b[j]=-,cout<<j<<" ";
        }
        ans+=a[i-];
        a[i]+=a[i-];
    }
    printf("\n%.2lf",ans/n);
}

//下面是比较高端的操作

1.pair数组

当有两个元素需要绑定在一起的时候可以用结构体 , 此时也可以用 pair 数组去替代结构体 。

http://www.cnblogs.com/ccut-ry/p/7606787.html

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    double sum= 0.0f;
    pair<];
    scanf("%d",&n);
    ;i<n;i++)
        scanf(;
    sort(a,a+n);
    ;i<n;i++)
    {
        sum+=a[i].first*(n-i-);
        printf("%d ",a[i].second);
    }
    printf("\n%.2lf",sum/n);
    ;
}

2.结构体

#include<bits/stdc++.h>
using namespace std;

struct water{
    int time,num;
}p[];

bool comp(water a,water b)
{
    if(a.time!=b.time)
        return a.time<b.time;
    return a.num<b.num;
}

int n;
double sum;
int main()
{
    scanf("%d",&n);
    ; i<=n; i++) {        //输入时间并重置序号
        scanf("%d",&p[i].time);
        p[i].num=i;
    }
    sort(p+,p+n+,comp);
    ;i<=n;i++)
    {
         printf("%d ",p[i].num);
         sum+=i*p[n-i].time;
    }
    sum/=n;
    printf("\n%.2f",sum);
    ;
}

3.循环

#include<bits/stdc++.h>
#define for(a,c,e) for(int a=c;a<=e;a++)
#include<iomanip>
using namespace std;
int main()
{
    ];
    double sum;
    scanf("%d",&n);
    ,n)
        scanf("%d",&a[i]);
    ,n)
    {
        ,m2=;
        ,n)
            if(a[j]<m2)m1=j,m2=a[j];
        printf("%d ",m1);
        a[m1]=;
        sum+=m2*(n-i);
    }
    //printf("\n%.2f",sum/n);
    cout<<endl<<)<<sum/n;
    ;
}

P1223 排队接水的更多相关文章

  1. 洛谷——P1223 排队接水

    P1223 排队接水 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行, ...

  2. 洛谷 P1223 排队接水

    洛谷 P1223 排队接水 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共 ...

  3. luogu P1223 排队接水 x

    P1223 排队接水 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行, ...

  4. (贪心)P1223 排队接水 洛谷

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别 ...

  5. 洛谷 P1223排队接水【贪心】

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别 ...

  6. (Java实现) 洛谷 P1223 排队接水

    题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种顺序,使得n个人的平均等待时间最小. 输入输出格式 输入格式: 输入文件共两行,第一行为n:第二行分别 ...

  7. 洛谷P1223 排队接水

    https://www.luogu.org/problem/P1223 #include<bits/stdc++.h> using namespace std; struct st { i ...

  8. sicily 1016. 排队接水--课程作业

                                                                                    1016. 排队接水 Time Limi ...

  9. 问题 A: 【贪心】排队接水

    问题 A: [贪心]排队接水 时间限制: 1 Sec  内存限制: 128 MB[命题人:外部导入] 题目描述 有n个人在一个水龙头前排队接水,假如每个人接水的时间为Ti,请编程找出这n个人排队的一种 ...

随机推荐

  1. 关于spring配置文件中编辑时没有提示信息的问题

    spring配置文件头部信息主要是提供一个xml的编写规范作用. 新创建的配置文件引入头部信息后,编辑时没有提示信息,重启elipse即可解决.

  2. go4--break,continue + 标签

    package main /* 指针 Go虽然保留了指针,但与其它编程语言不同的是,在Go当中不 支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针 目标对象的成员 操作符”&am ...

  3. ios33--线程安全

    // // ViewController.m // 05-掌握-线程安全 // // 多线程下载文件:每个线程下的部分可能是交错的,到时候就拼接不了.除非每个线程下载的不是交错的,而是从头到尾依次分开 ...

  4. ubuntu下的root的创建进入与退出

    创建: 在终端中输入:sudo passwd rootEnter new UNIX password: (在这输入你的密码)Retype new UNIX password: (确定你输入的密码)pa ...

  5. javascript 模块化编程----模块的写法

    一.原始写法 模板就是实现特定功能的一组方法 只要把不同的函数(以及记录状态的变量)简单地放在一起,就算是一个模块. function m1(){ //... } function m2(){ //. ...

  6. ubuntu/linuxmint如何添加和删除PPA源

    [添加] 1.sudo add-apt-repository ppa:user/ppa-name 2.sudo apt-get update (然后再安装软件sudo apt-get install ...

  7. 服务器端解决ajax跨域问题

    这里描述以Tomcat为Web服务器情况下的解决办法,在Java Web程序的WEB-INF下的web.xml文件中加入如下配置即可. <!--cors filter--> <fil ...

  8. E20171226-hm

    stack n.栈 heap  n.堆 backtracking 回溯法,後戻り storage  n. 贮存; 贮藏; 储藏处,仓库; 贮存器,蓄电(瓶); ストレージ

  9. ADSI和其他内容

    ADSI (Active Directory Services Interface)是Microsoft推出的一项技术,它统一了许多底层服务的编程接口,程序员可以使用一致的对象技术来访问这些底层服务. ...

  10. Asp.Net 开发实战技术

    1.什么是WMI技术 WMI是一项核心的Windows管理技术,WMI作为一种规范和基础结构,通过它可以访问.配置.管理和监视几乎所有的Windows资源,比如用户可以在远程计算机器上启动一个进程:设 ...