奖学金-贪心法

来源:互联网 发布:淘宝自制护肤品北海 编辑:程序博客网 时间:2024/05/18 04:00

小v今年有n门课,每门都有考试,为了拿到奖学金,小v必须让自己的平均成绩至少为avg。每门课由平时成绩和考试成绩组成,满分为r。现在他知道每门课的平时成绩为ai ,若想让这门课的考试成绩多拿一分的话,小v要花bi 的时间复习,不复习的话当然就是0分。同时我们显然可以发现复习得再多也不会拿到超过满分的分数。为了拿到奖学金,小v至少要花多少时间复习。



import java.util.*; public class Main{    static class test{        int score;        int work;    }    public static void main(String[] args) {        // TODO Auto-generated method stub       Scanner in=new Scanner(System.in);               while(in.hasNext()){           List<test> list=new ArrayList<test>();           int n=in.nextInt();           int r=in.nextInt();           int avg=in.nextInt();           for(int i=0;i<n;i++){                 test a=new test();               a.score=in.nextInt();               a.work=in.nextInt();               list.add(a);           }           Collections.sort(list, new Comparator<test>(){            @Override            public int compare(test o1, test o2) {                // TODO Auto-generated method stub                return o1.work-o2.work;            }                     });           long effort=0;           int totalScore=0;           for(int j=0;j<list.size();j++){               totalScore+=list.get(j).score;           }           for(int j=0;j<list.size();j++){                        while(list.get(j).score<r){                                      if(totalScore<avg*n){                   list.get(j).score++;                   totalScore++;                   effort+=list.get(j).work;                   }else{                       break;                   }               }                                }           System.out.println(effort);       }          }}



0 0
原创粉丝点击