题解:P11349 [NOISG2024 Finals] Problem Setter
思路
贪心,排序。
通过题面,不难发现,当你把题目放到比赛中满意度会增加
所以我们就可以按照增加的满意度进行降序排序,使得
然后就可以判断质量是否合法以及
代码
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<unordered_map>
using namespace std;
using ll = long long; // 不要忘记开 long long
const ll N = 2 * 1e5 + 5;
struct n1 { // 比赛
ll m, s;
}a[N];
struct n2 { // 题目
ll q, d;
}b[N];
bool cmp(n1 x, n1 y) { // 按照满意度降序排序
return x.s > y.s;
}
ll c, p, ans = 0;
int main() {
scanf("%lld%lld", &c, &p);
for (int i = 1; i <= c; i++) scanf("%lld%lld", &a[i].m, &a[i].s);
for (int i = 1; i <= p; i++) scanf("%lld%lld", &b[i].q, &b[i].d);
sort(a + 1, a + c + 1, cmp);
for (int i = 1; i <= p; i++) { // 枚举题目
for (int j = 1; j <= c; j++) { // 枚举比赛
if (b[i].q >= a[j].m && b[i].d <= a[j].s) {
// 质量是否合法,b[i].d <= a[j].s 可以转化为 a[j].s - b[i].d >= 0,即满意度不为负数
ans += a[j].s - b[i].d;
break;
}
}
}
printf("%lld", ans);
return 0;
}