#include<bits/stdc++.h>using
namespace std;int n;
struct node {
int s;//开始时间
int t;//结束时间
};
node a[200005];
bool cmp(node x, node y) {
//比较函数
return x.t < y.t;
//结束时间早的排在前面
}
int ans = 0;
int main() {
cin >> n;
for(int i = 1; i <= n; i++) {
cin >> a[i].s >> a[i].t;
}
sort(a + 1, a + n + 1, cmp);//排序
int t = 0;//可以开始录制的最早时间
for(int i = 1; i <= n; i++) {//遍历每个节目
if (a[i].s >= t) {//如果开始时间大于等于可以开始录制的时间
ans++;//录之
t = a[i].t;//更新可以开始录制时间为节目结束时间
}
}
cout << ans;
return 0;
}
全部回复 共 2 条
-
#include<bits/stdc++.h> using namespace std; int a[1000005];//a[i]表示第i天需要使用教室的人数 int n; int ans=0; int main() { scanf("%d",&n); for (int i=1;i<=n;i++){ int s,t; scanf("%d %d",&s,&t); a[s]++;//开始使用时增加一人 a[t+1]--;//结束使用后减少一人 } int sum=0; for (int i=1;i<=1000000;i++){//做前缀和 sum+=a[i]; ans=max(ans,sum);//求最大值 } printf("%d",ans); return 0; } -
#include<bits/stdc++.h> using namespace std; int a[1000005];//a[i]表示第i天需要使用教室的人数 int n; int ans=0; int main() { scanf("%d",&n); for (int i=1;i<=n;i++){ int s,t; scanf("%d %d",&s,&t); a[s]++;//开始使用时增加一人 a[t+1]--;//结束使用后减少一人 } int sum=0; for (int i=1;i<=1000000;i++){//做前缀和 sum+=a[i]; ans=max(ans,sum);//求最大值 } printf("%d",ans); return 0; }
发表回复
登录后即可回复本帖,与出题人和同学一起讨论。
登录