题目描述:


解题思路:
根据题意是多个区间,那么我们可以想到使用差分,前缀和解决。
代码:
cpp
#include <bits/stdc++.h>
using namespace std;
void solve() {
int n; cin >> n;
vector<pair<int, int>> v;
while (n--) {
int a, b, c;
int d, e, f;
scanf("%d:%d:%d", &a, &b, &c); // scanf拆分字符串得对应变量。改为 %d 因为变量是 int
scanf("%d:%d:%d", &d, &e, &f);
int l = a * 3600 + b * 60 + c;
int r = d * 3600 + e * 60 + f;
v.push_back({l, r});
}
sort(v.begin(), v.end());
int num = 24 * 3600;
vector<int> all(num + 2, 0); // 稍微扩大一点防止越界
for (auto p : v) { // c++11遍历pair数组是这样的******
all[p.first]++;
all[p.second + 1]--;
}
int cnt = 0; // 添加 cnt 的声明
int mx = 0;
for (int i = 0; i <= num; i++) {
cnt += all[i];
mx = max(mx, cnt);
}
cout << mx << "\n";
}
int main() {
solve(); // 修正拼写错误
return 0;
}