码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 洛谷P1223 排队接水


    排队接水

    题目描述

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

    输入格式

    第一行为一个整数 n n n。

    第二行 n n n 个整数,第 i i i 个整数 T i T_i Ti​ 表示第 i i i 个人的等待时间 T i T_i Ti​。

    输出格式

    输出文件有两行,第一行为一种平均时间最短的排队顺序;第二行为这种排列方案下的平均等待时间(输出结果精确到小数点后两位)。

    样例 #1

    样例输入 #1

    10 
    56 12 1 99 1000 234 33 55 99 812
    
    • 1
    • 2

    样例输出 #1

    3 2 7 8 1 4 9 6 10 5
    291.90
    
    • 1
    • 2

    提示

    n ≤ 1000 , t i ≤ 1 0 6 n \leq 1000,t_i \leq 10^6 n≤1000,ti​≤106,不保证 t i t_i ti​ 不重复。

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

    思路:再该代码中,T代表输入进来的每个人需要接水时间,p代表复制T数组,q代表最后排序后,记录下每个人的序号,然后首先对T排序,排序后,用T和p比较,看谁原来在哪个位置,然后用q记录下来当初的位置,记录下来后就把p数组里面的该值赋为0,防止下次遍历重复在该值退出循环,至此,我们已经获取到我们想要的所有数值,可以输出了!
    该算法除了排序算法(我使用的冒泡,因为使用起来顺手)可能不是最优,但是该思想值得思考,如若有更好的想法,欢迎各大朋友私聊我!!!
    代码如下(编译器是dev,语言是C语言):

    #include
    int n,T[1005],p[1005],i,j,temp,q[1005];
    double sum = 0;
    int main(){
        scanf("%d",&n);
        for(i = 1;i<=n;i++){
            scanf("%d",&T[i]);
            p[i] = T[i];
        }
        for(i = 1;i<=n;i++){
            for(j = i+1;j<=n;j++){
                if(T[i]>T[j]){
                    temp = T[i];
                    T[i] = T[j];
                    T[j] = temp;
                }
            }
        }
        for(i = 1;i<=n;i++){
            sum = sum + T[i]*(n-i);
            for(j = 1;j<=n;j++){
                if(T[i] == p[j]){
                    p[j] = 0;
                    q[i] = j;
                    break;
                }
            }
        }
        for(i = 1;i<=n;i++){
            printf("%d ",q[i]);
        }
        sum = sum/n;
        printf("\n%.2lf",sum);
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
  • 相关阅读:
    C#学习系列相关之多线程(一)----常用多线程方法总结
    从首届中国测绘地理信息大会,解读2023年度国产GIS创新关键词
    计算机视觉:一文搞懂卷积神经网络中的池化层
    vue3——element-plus 实现页面刷新之后,保持菜单的激活状态
    在微信公众号上怎么搭建付费课程功能
    主动发现系统稳定性缺陷:混沌工程 | 京东云技术团队
    【经验分享】Wubuntu------体验Windows和Ubuntu的结合体
    解决ubuntu开机变慢;删除耗时启动项
    周星驰亲自下场招人 Web3.0究竟是什么?
    element安装指定版本ui
  • 原文地址:https://blog.csdn.net/weixin_43708800/article/details/128034237
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号