蓝桥杯历年真题题解----2020年-- 答疑

简介: 蓝桥杯历年真题题解----2020年-- 答疑

答疑

答疑

题目


314bc5788b7242db8b3446c436ba3775.png


输入输出样例

示例

输入

3
10000 10000 10000
20000 50000 20000
30000 20000 30000

输出

280000

解题思路

贪心

对每个学生所需的总时间按升序排序

然后逐个遍历,计算当前发信息的时间,加入总时间(要输出的结果)

由于前一个学生出去后一个才可以进来,所以后面要在加上一个出去的时间

解题代码

注意

会爆int

package 蓝桥杯.真题2020;
import java.io.*;
import java.util.Arrays;
import java.util.Comparator;
import java.util.stream.Stream;
public class 答疑 {
    static StreamTokenizer in = new StreamTokenizer(new BufferedReader(new InputStreamReader(System.in)));
    static PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(System.out)));
    public static long in() throws IOException {
        in.nextToken();
        return (long) in.nval;
    }
    public static void main(String[] args) throws IOException {
    //读入
        int n = (int) in();
        Stu[] s = new Stu[n];
        for ( int i=0; i<n; i++ ) {
            s[i] = new Stu();
            s[i].s = in();
            s[i].a = in();
            s[i].e = in();
        }
        //排序
        //按照每个人所需的总时间升序
        Arrays.sort(s, new Comparator<Stu>() {
            @Override
            public int compare(Stu o1, Stu o2) {
                return (int) ((o1.s+o1.a+o1.e)-(o2.s+o2.a+o2.e));
            }
        });
        long ans = 0;
        long cur = 0;
        for ( int i=0; i<n; i++ ) {
        //当前发信息的时间  距离开始的时间
            cur = cur+s[i].s+s[i].a;//发信息为答疑完发信息
            ans += cur;//加入答案
            cur += s[i].e;//出去需要时间,当前时间向后
        }
        System.out.println(ans);
    }
}
class Stu {
    long s;//进入的时间
    long a;//答疑时间
    long e;//收拾出去的时间
}
目录
打赏
0
0
0
0
17
分享
相关文章
蓝桥杯历年真题题解----2020年-- 子串分值和
蓝桥杯历年真题题解----2020年-- 子串分值和