8 solutions

  • 1
    @ 2021-10-17 19:20:12

    题解

    这个题还是很简单的,合理分配时间,尽量让多的活动可以做到“无缝衔接”,自然就是上一个活动结束发刚好可以让下一个活动开始就是最佳利用时间,解题思路基本也就出来了,将结束时间按照先后顺序进行排序,然后以第一个活动为基准,一次链接后面可以“顺位”——开始时间在上一个结束时间之后或者相同,这样就可以达到合理分配时间的效果,上代码:

    代码

    #include<bits/stdc++.h>
    #include<iostream>
    #include<algorithm>
    #include<iomanip>
    using namespace std;
    int x[100000000];
    struct Main{
    	int kai;
    	int jie;
    }pp[1001];
    int cmp(Main x,Main y){
    	return x.jie<y.jie;
    }
    int main()
    {
    	int n,tong=1;
    	cin>>n;
    	for(int i=1;i<=n;i++){
    		cin>>pp[i].kai>>pp[i].jie;
    	}
    	sort(pp+1,pp+n+1,cmp);
    	int lian=1;
    	for(int i=2;i<=n;i++){
    		if(pp[i].kai>=pp[lian].jie){
    			tong++;
    			lian=i;
    		}
    	}
    	cout<<tong<<endl; 
    	return 0;
    }
    

    Information

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