首页 > 试题广场 >

奖学金

[编程题]奖学金
  • 热度指数:45837 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
小v今年有  n 门课,每门都有考试,为了拿到奖学金,小v必须让自己的平均成绩至少为avg
每门课由平时成绩和考试成绩组成,满分为 r
现在他知道每门课的平时成绩为a_i ,若想让这门课的考试成绩多拿一分的话,小v要花 b_i的时间复习,不复习的话当然就是0分。
同时我们显然可以发现复习得再多也不会拿到超过满分的分数。为了拿到奖学金,小v至少要花多少时间复习。

输入描述:
第一行三个整数nravg。(1 \leq n \leq 1e5,1 \leq r \leq 1e9,1 \leq avg \leq 1e6
接下来 n 行,每行两个整数 a_i,b_i。(0 \leq a_i,b_i \leq 1e6


输出描述:
一行输出答案。
示例1

输入

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

输出

43
头像 Jevin_yao
发表于 2020-08-07 17:07:12
解题思路: 根据输入的每门课程对可能提分所需要的时间进行从小到大的排序,因为后面需要得出花费的最少复习时间,所以要先把能花时间少的提分科目提到满分; 使用一个TreeSet实现排序,因为TreeSet对整型数据有自动排序功能,而且可以去重; 将提升花费时间作为key,科目目前还可以得到的分数作为v 展开全文
头像 hyandsg
发表于 2021-01-31 10:03:18
大概思路:遇到极值问题一般想到贪心解决,这里很容易想到按课程复习代价从小到大排序,贪心的证明用反证法证明即可。个人踩雷:1 输入有多个测试样例,需要Scanner.hasNext();2 看测试数据的范围,可以看出int不够大,需要使用long。 import java.util.*; public 展开全文
头像 摆烂摆烂摆烂
发表于 2022-05-09 17:17:25
if __name__ == '__main__': while True: nravg = sys.stdin.readline().strip() if not nravg: break n,r,avg = [int 展开全文
头像 贪吃的迪恩顶呱呱
发表于 2024-05-02 17:53:32
先按照复习的“性价比”排序,花较少单位时间的课程排在前面;再计算出差多少分能够合格;不断寻找能够补的课程并迭代缩小差距直至为0 #include <algorithm> #include <iostream> #include <vector> using nam 展开全文
头像 牛客499819205号
发表于 2021-10-15 17:24:02
#include <iostream> #include <vector> #include <algorithm> using namespace std; bool compare(const&nbs 展开全文
头像 牛客898423844号
发表于 2021-09-15 20:45:31
#include<iostream> #include<vector> using namespace std; struct cla //课程 { int s; //分数 int t; //时间 }; long long plan(vect 展开全文
头像 👉爱🌹如流水👈
发表于 2021-04-19 17:19:25
贪心策略:第一步:计算已经取得成绩第二步:计算每门最大可以还可以获得多少分第三步: 计算还需取得成绩P第四步:按照升序排序第五步:从小往大取 并注意受限条件。 #include<iostream> using namespace std; #include<vector> # 展开全文
头像 牛客660479076号
发表于 2022-04-28 20:42:01
import java.util.*; public class Main{ public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.has 展开全文
头像 牛客486456043号
发表于 2024-07-28 21:44:33
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); while (in.h 展开全文
头像 牛客409434554号
发表于 2022-01-05 15:04:50
">using namespace std; struct xk{ int a,b; }; bool cmp(xk &x,xk &y) { return x.b<y.b; } int main() { int n,r,avg; while(cin 展开全文