456

噢莫加纳加加加 · 发布于 2025-11-22 · 浏览 246 回复 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;
}

全部回复 共 2 条

  1. 噢莫加纳加加加 #1 楼主 ·
    #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;
    }
    
  2. 噢莫加纳加加加 #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;
    }
    

发表回复