8 solutions

  • 0
    @ 2021-10-18 1:14:57

    题解

    这道题呢,需要找出时间不冲突的最多活动数,对活动结束时间进行排序,然后判断前一个活动的结束时间是不是小于后一个活动的开始时间。在排序中就已经确定了第一个活动,所以计数的时候从1开始,注意记录下一个活动的下标。

    代码

    #include<bits/stdc++.h>
    using namespace std;
    struct node{
    	int b,e;
    }a[1005];
    bool com(node a,node b){
    	return a.e<b.e;
    }
    int main(){
    	std::ios::sync_with_stdio(false);
        int n,sum=1,ll=0;
        cin>>n;
        for(int i=0;i<n;i++) cin>>a[i].b>>a[i].e;
        sort(a,a+n,com);
    	for(int i=1;i<n;i++){
    		if(a[i].b>=a[ll].e){
    			ll=i;
    			sum++;
    		}
    	}
    	cout<<sum<<endl;
        return 0;
    }
    

    Information

    ID
    91
    Time
    1000ms
    Memory
    256MiB
    Difficulty
    6
    Tags
    # Submissions
    201
    Accepted
    61
    Uploaded By