您的位置:首页 > 其它

名企笔试:2016网易笔试题(奖学金)2017-05-12 算法爱好者

2017-05-22 17:43 375 查看
题目描述小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

C++源代码:

//	Netease problem 2017.05.12
//	2017.05.22 by wyj

/*
名企笔试:2016网易笔试题(奖学金)2017-05-12 算法爱好者

题目描述
小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 9
0 5
9 1
8 1
0 1
9 100

输出例子:
43
*/

#include
#include
#include
using namespace std;

class Course
{
public:
int a;
int b;
};

//课程按复习花费时间升序
bool sortByb(const Course &c1, const Course &c2)
{
return c1.b < c2.b;
}

int main()
{
int n, r, avg;
int grade = 0, gradeA = 0, gradeB = 0;	//所需总成绩,平时总成绩,所需考试总成绩
int Min_t = 0;
int i, j = 0;

cin >> n >> r >> avg;
vector vec_C(n);
for (i = 0;i < n;i++)
{
cin >> vec_C[i].a >> vec_C[i].b;
gradeA += vec_C[i].a;
}
sort(vec_C.begin(), vec_C.end(), sortByb);		//课程按复习花费时间升序

grade = n*avg;
gradeB = grade - gradeA;
i = j = 0;
while (i < gradeB)
{
while (i < gradeB && vec_C[j].a < r)
{
Min_t += vec_C[j].b;
vec_C[j].a++;
i++;
}
j++;
}

cout << Min_t << endl;
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐