• 奖学金 题解


    题目描述
    小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
    输出描述:
    一行输出答案。
    示例1

    5 10 9
    0 5
    9 1
    8 1
    0 1
    9 100

    
    #include <iostream>
    #include <cstring>
    #include <algorithm>
    typedef long long ll;
    using namespace std;
    const int N=1e5+10;
    struct Item {
        int score,time;
        bool operator < (const Item & aa) const {
            if (aa.time == time) return score < aa.score;
            return time < aa.time;
        }
    }a[N];
    int main() {
        int n,r,avg;  
        while(cin>>n>>r>>avg) {
            //平均至少avg 有奖学金, ,满分为 r ,n 个课程
            ll target = avg * n;
            ll curScore = 0;
            for (int i=0;i<n;++i) {
                int score,time;
                //a平时成绩,  b 要多拿1 分需要 b 时间复习
                scanf ("%d %d",&score, &time);
                curScore+= score;
                a[i] = {score,time};    
            }
            sort(a,a+n);
            ll needTime=0;
            for (int i=0;i<n;++i) {
                if (curScore>= target)break;//到达需要的分数
                if(target - curScore > r-a[i].score) {
                    curScore += r-a[i].score;
                    needTime += a[i].time * (r-a[i].score);
                }else {
                    needTime += (target - curScore)*a[i].time;
                    //分数够了,直接跳出循环
                    curScore = target;
                }
            }
            printf("%lld
    ", needTime);
        }
        
        
        
        
        
        
    }
    
    
  • 相关阅读:
    Oracle11g工具
    Oracle数据库中scott用户的所有表结构
    Oracle数据库手动解锁scott用户
    Oracle数据库实例的删除和安装
    Oracle数据库的安装
    Oracle数据库发展历史
    禁止浏览器中双击选中元素的解决方法
    Window 设置pm2开机自启动服务
    通过node创建web服务器----express插件打包上线
    vue项目优化----通过externals加载外部CDN资源
  • 原文地址:https://www.cnblogs.com/lyr-2000/p/14259480.html
Copyright © 2020-2023  润新知