zoukankan      html  css  js  c++  java
  • 1319:【例6.1】排队接水

    本蒟蒻的第一条博客,初入茅庐,请多关照;

    满分代码,可以直接抄

    它说 给定两个元素,n和m,n是人数,m是时间

    第一个排序问题应该比较好解决,就直接先把时间按从小到大的规则排好,输出相应的下标就ok了,不过,需要注意的是,这里需要有一个特判,就是时间相同的,先来的先接水,总不能让人家好不容易抢个位置然后再站到后头哇,不太好,所以,当时间相同的时候,就需要比较下标了,下标小的在前面,反之在后面,话不多说上代码!

    //这里头文件就不打了哈,比较懒
    //这里建议使用结构体哈,就像这样,个人觉得这样会方便一些
    struct student{
        int time,top;
    }st[1010];
    
    //用于进行特判的函数 
    bool cmp(student a, student b){
        if(a.time == b.time)
            return a.top < b.top;
        else return a.time < b.time;
    }
    
    int main(){
        int n,i;
        cin>>n;//输入n
        for(i=1;i<=n;i++){
            cin>>st[i].time;//输入每个人相应的时间
            st[i].top=i;//记录其相应的下标
        }    
        sort(st+1,st+n+1,cmp);//sort直接将其时间升序排列
        for(i=1;i<=n;++i)
            cout<<st[i].top<<" ";//对应输出其下标就ok啦
        cout<<endl;
    }

    接下来的问题就比较麻烦了,不过也是比较好理解的,就这样说吧,一个人接水后面的人等,每个人等的时间就是他接水的时间,乘以人数,就是等待时间,可能还不太明白,我打个比方就茅塞顿开了,上学的时候,想必大家都听过这样一句话,“你一个人浪费一分钟,51个人就是51分钟,这节课都下了,下节课都上了!”我们班是51个人哈,ta就和这个是一个道理,上代码!

    double sum=0;//这里一定要用double类型啊 
        for(i=1;i<=n;++i){
            sum+=st[i].time*(n-i);//记录时间 
        }
        cout<<fixed<<setprecision(2)<<sum/n<<endl;//输出就OK啦 

    所以,整体的话就应该是这样的

    #include<bits/stdc++.h>
    using namespace std;
    struct student{
        int time,top;
    }st[1010];
    //用于进行特判的函数 
    bool cmp(student a, student b){
        if(a.time == b.time)
            return a.top < b.top;
        else return a.time < b.time;
    }
    int main(){
        int n,i;
        cin>>n;//输入n
        for(i=1;i<=n;i++){
            cin>>st[i].time;//输入每个人相应的时间
            st[i].top=i;//记录其相应的下标
        }    
        sort(st+1,st+n+1,cmp);//sort直接将其时间升序排列
        for(i=1;i<=n;++i)
            cout<<st[i].top<<" ";//对应输出其下标就ok啦
        cout<<endl;
        double sum=0;//这里一定要用double类型啊 
        for(i=1;i<=n;++i){
            sum+=st[i].time*(n-i);//记录时间 
        }
        cout<<fixed<<setprecision(2)<<sum/n<<endl;//输出就OK啦 
        return 0;    
    }

    试题链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1319

  • 相关阅读:
    Qt5.9/C++项目开发架构理论
    Qt5及模块架构分析
    简单工厂模式实例
    SQL Server 存储过程通用分页
    面试问题
    ASP.Net 基础知识
    财务自由之路名句
    javascript 根据输入的关键词自动提示
    .NET批量更新
    在windows7上配置xampp虚拟主机
  • 原文地址:https://www.cnblogs.com/qwn34/p/13532346.html
Copyright © 2011-2022 走看看