蓝桥杯-答疑

原题链接:用户登录

答疑

题目描述

有 n 位同学同时找老师答疑。每位同学都预先估计了自己答疑的时间。

老师可以安排答疑的顺序,同学们要依次进入老师办公室答疑。一位同学答疑的过程如下

1.首先进入办公室,编号为 的同学需要 s, 毫秒的时间2.然后同学问问题老师解答,编号为的同学需要 ai毫秒的时间。

3.答疑完成后,同学很高兴,会在课程群里面发一条消息,需要的时间可 以忽略

4.最后同学收拾东西离开办公室,需要 e;毫秒的时间。一般需要 10 秒、20 秒或 30 秒,即e;取值为 10000,20000或 30000。

一位同学离开办公室后,紧接着下一位同学就可以进入办公室

r

答疑从 0 时刻开始。老师想合理的安排答疑的顺序,使得同学们在课程群 里面发消息的时刻之和最小。

java 复制代码
import java.util.Arrays;
import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner scanner =new Scanner(System.in);
        int N=scanner.nextInt();
        long[][] list=new long[N][4];//用第四个数来储存三个数之和
        long num=0l;//num记录每个同学的发信息的时间
        long sum=0l;//sum记录所有同学发的时间的总和
        for (int i = 0; i < N; i++) {
            for (int j = 0; j <3 ; j++) {
                list[i][j]=scanner.nextLong();//输入
                list[i][3]+=list[i][j];//前三个数的和
            }
        }
        //下面两个sort用于排序,由小到大排序
        //可能会有几个同学所花的时间一样,所以先给收拾所花的时间排序
        Arrays.sort(list,(a,b)->(int)(a[2]-b[2]));
        //这样第二个排序,时间相同的同学,收拾所花的时间长的会在后面,
        Arrays.sort(list,(a,b) -> (int) (a[3]-b[3]));
        for (int i = 0; i <N ; i++) {
            num+=list[i][3];//每个同学的发信息时间
            sum+=num-list[i][2];//同学发信息时间的总和
        }
        System.out.println(sum);
    }

}

近日总结:

开学了,在学校了,明天开始上课,别人已经在面试了,我还在嘎嘎嘎,我太摆了,从今天开始,我要好好学习,预计一个星期之内将面经搞完,开始面试。

相关推荐
念越6 小时前
蓝桥杯17届功能测试模拟1期题目及解析(1)
功能测试·蓝桥杯·测试用例·场景法
做怪小疯子10 小时前
蚂蚁暑期 319 笔试
算法·职场和发展
计算机安禾10 小时前
【C语言程序设计】第37篇:链表数据结构(一):单向链表的实现
c语言·开发语言·数据结构·c++·算法·链表·蓝桥杯
memcpy012 小时前
LeetCode 1456. 定长子串中元音的最大数目【定长滑窗模板题】中等
算法·leetcode·职场和发展
玛丽莲茼蒿12 小时前
LeetCode hot100【相交链表】【简单】
算法·leetcode·职场和发展
酉鬼女又兒15 小时前
入门前端CSS 媒体查询全解析:从入门到精通,打造完美响应式布局(可用于备赛蓝桥杯Web应用开发)
前端·css·职场和发展·蓝桥杯·前端框架·html5·媒体
小则又沐风a16 小时前
[蓝桥杯 2014 省 AB] 蚂蚁感冒
算法·职场和发展·蓝桥杯
云泽80817 小时前
蓝桥杯算法精讲:从宏观角度重新认识递归
算法·职场和发展·蓝桥杯
蒸蒸yyyyzwd17 小时前
后端面试经验
面试·职场和发展
仰泳的熊猫17 小时前
题目2576:蓝桥杯2020年第十一届省赛真题-解码
数据结构·c++·算法·蓝桥杯