牛客网---2016---网易奖学金

来源:互联网 发布:antlr sql解析 github 编辑:程序博客网 时间:2024/05/21 10:19

没错,我恋爱了,啧啧,话说啊,挺突然的,突然到我觉得一切都不真实,可是他有那么真是的存在着,哈哈,没办法,po图一张。。。开心。。。希望短时间内不要打脸,我还想多喜欢一阵子。。。

这里写图片描述

题目:
小v今年有n门课,每门都有考试,为了拿到奖学金,小v必须让自己的平均成绩至少为avg。每门课由平时成绩和考试成绩组成,满分为r。现在他知道每门课的平时成绩为ai ,若想让这门课的考试成绩多拿一分的话,小v要花bi 的时间复习,不复习的话当然就是0分。同时我们显然可以发现复习得再多也不会拿到超过满分的分数。为了拿到奖学金,小v至少要花多少时间复习。
输入:
第一行三个整数n,r,avg(n大于等于1小于等于1e5,r大于等于1小于等于1e9,avg大于等于1小于等于1e6),接下来n行,每行两个整数ai和bi,均小于等于1e6大于等于1

5 10 90 59 18 10 19 100

输出:

43

解析:
1 . 敲黑板了,要多拿一分,需要花多长时间。
解题所需函数:
1 . 没啥毛病,就最主要的是冒泡排序了。。。
代码:

import java.util.*;// 创建主函数public class Main {   public static void main(String[] args) {       // 准备录入数据        Scanner in = new Scanner(System.in);       // 这个也没毛病,啧啧,while循环录入        while (in.hasNext()) {            // 定义需要的 n r 和 avg            int n = in.nextInt();            long r = in.nextLong();            long avg = in.nextLong();            // 记录学习效率            long[][] arr = new long[n][2];            //需要的分数            long total = avg*n;            //现在的分数            long score = 0;            for(int i = 0;i<n;i++){                // 原本成绩                arr[i][0] = in.nextLong();                // 复习成本                arr[i][1] = in.nextLong();                score += arr[i][0];            }            // 对学习效率进行排序            sort(arr);            long time = 0;            int i = 0;            while(score<total&&i<n){                //第i门课没有满分                if(arr[i][0]<r){                    time += arr[i][1];                    score++;                    arr[i][0] += 1;                }else{                    // 否则下一个课程,靴靴                    i++;                }            }            System.out.println(time);          }       in.close();    }    //对时间进行排序    public static void sort(long[][]a){        for(int i = 0;i<a.length-1;i++){            boolean flag = true;            //每一次循环都确立了最后的一个值,这样说对吧,冒泡排序            for(int j = 0;j<a.length-1-i;j++){                // 成本由小到大排列                if(a[j][1]>a[j+1][1]){                    // 需要交换两个值,所以用了temp和temp2                    long temp = a[j][0];                    long temp2 = a[j][1];                    a[j][0] = a[j+1][0];                    a[j+1][0] = temp;                    a[j][1] = a[j+1][1];                    a[j+1][1] = temp2;                    flag = false;                }            }            if(flag)                return;        }    }}
原创粉丝点击