zhege122 @ 2024-11-09 11:16:31
SSR现在是班级的体育委员,负责给每一组的学生分配器材。
今天的体育课是练习跳绳,SSR要负责准备跳绳的数量,每一组学生人数是不同的,并且每一组学生的练习时间也不同,同一个跳绳同一个时间只能一个人使用。
SSR不知道最少准备多少条跳绳,才能满足本节体育课的使用,作为SSR的朋友SST,请你帮助他找出结果。
INPUT
第一行输入一个整数
接着
OUTPUT
输出为一行,表示最少要准备的跳绳数量。
样例输入1
3
4 10 1
8 13 3
2 6 2
样例输出1
4
数据范围
对于 100% 的数据:
#include <bits/stdc++.h>
using namespace std;
struct event {
int time, type, cnt;
bool operator<(const event &other) const {
if (time != other.time) {
return time < other.time;
}
return type > other.type;
}
};
vector<event> events;
priority_queue<int> q;
int main() {
int n;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
int s, t, b;
scanf("%d%d%d", &s, &t, &b);
events.push_back({s, 1, b});
events.push_back({t, -1, b});
}
sort(events.begin(), events.end());
int mx = 0;
int curs = 0;
for (const auto &event : events) {
if (event.type == 1) {
q.push(event.cnt);
curs += event.cnt;
mx = max(mx, curs);
} else {
curs -= event.cnt;
q.pop();
}
}
printf("%d\n", mx);
return 0;
}
为啥只有20分!!!大佬们求助DEBUG
by zhang_kevin @ 2024-11-09 12:17:07
你咋贪心的?没太看懂
by zhege122 @ 2024-11-09 12:19:52
@zhang_kevin 那正确代码应该是怎样的(按照你的思路)