本文主要是介绍CodeForces 492C Vanya and Exams,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
CodeForces 492C Vanya and Exams
CodeForces 492C
题目大意:
有一位同学要参加N门科目的考试,每门科目的满分固定,现在这位同学为了拿到奖学金需要达到平均分S,这就需要它在原来的基础上对某些科目的分数进行提升,然后提升每门科目需要做Ai个测试,于是希望能够做尽量少的测试能够使得分数达到平均分。
解题思路:
将所有的科目按照对应的测试数进行排序,每次都选择测试数小的来进行分数的提升,直到到达平均分为止。
代码:
#include <cstdio>
#include <algorithm>using namespace std;typedef long long ll;const int maxn = 1e5 + 5;
struct exam {int a, b;
}e[maxn];int cmp(const exam& e1, const exam& e2) {return e1.b < e2.b;
}int N, R, AVG;
int main () {ll gap, ans;while (scanf("%d%d%d", &N, &R, &AVG) != EOF){ans = gap = 0;for (int i = 0; i < N; i++) {scanf ("%d%d", &e[i].a, &e[i].b);gap += e[i].a - AVG;}if (gap >= 0) {printf ("%lld\n", ans); continue;}sort(e, e + N, cmp);for (int i = 0; i < N; i++) {if (gap + (R - e[i].a) <= 0) {ans += (ll)e[i].b * (R - e[i].a);gap += (R - e[i].a);} else {ans -= (ll)e[i].b * gap;gap = 0;}if (gap == 0)break;}printf ("%lld\n", ans);}return 0;
}
这篇关于CodeForces 492C Vanya and Exams的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!