#include <iostream> #include <vector> #include <algorithm> using namespace std; bool compare(const pair<int, int>& a, const pair<int, int>& b) { return a.second < b.second; } int main() { int n; cin >> n; vector<pair<int,int>> act(n); for(int i = 0 ;i<n;i++){ int t1,t2; cin>>t1>>t2; act[i].first = t1; act[i].second = t2; } //按照结束时间进行排序 sort(act.begin(),act.end(),compare); int count =0; int lasttime = 0; for(auto activities:act){ if(activities.first>=lasttime){ count++; lasttime = activities.second; } } cout << count << endl; return 0; }
贪心算法,与主持人(一)的题目比较像,安排n个活动,利用pair收录数据,然后按照结束时间的先后进行全数组排序,排序后遍历,如果当前遍历的数组开始时间晚于上一个的结束时间,那么计数加一,对结束时间进行更新,如果没有,跳过。返回计数结果即可。