噢莫加纳加加加 • 2天前
#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;
}
评论:
#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;
}
请先登录,才能进行评论