竞赛
考级
#include<bits/stdc++.h> using namespace std; struct node{ int s,e; }a[1001]; bool cmp(node a,node b){ return a.e<b.e; } int main(){ int n,num=1; cin>>n; for(int i=0;i<n;i++) cin>>a[i].s>>a[i].e; sort(a,a+n,cmp); int last=a[0].e; for(int i=1;i<n;i++){ if(a[i].s>=last){ num++; last=a[i].e; } } cout<<num; return 0; }
小蒟蒻
浅夏.山橘月
【算法分析】 当只有两个活动(两个时间段)的时候,选择参加哪个都是可以的,当有第三个活动的时候,这时候就会发现优先选择前两个结束较早的那个活动,才能完整的看第三个活动,所以尽早看完一个活动就有机会参加其它活动(也就是按结束时间从早到晚排序)。 【参考代码】 【时间复杂度】 O(nlog2n)O(nlog_2n)O(nlog2 n) 【预计得分】 100pts100pts100pts
AC君
看一眼:加我团队
星舰♈
嘉陵江的晚风.
yy
AMCE(孟维熙)
黑神话:悟空(有关必回)
#include <bits/stdc++.h> #include <algorithm> using namespace std; struct stu{ int begin; int end; }a[10000001]; int n; bool cmp(stu aa,stu bb){ return aa.end<bb.end; } int main(){ }
kali熊砸
沃姆
#include<iostream> #include<algorithm> using namespace std; struct node{ int s,e; }a[1010]; bool cmp(node u,node o){ return u.e<o.e; } int main(){ int n; cin>>n; for(int i=0;i<n;i++){ cin>>a[i].s>>a[i].e; } sort(a,a+n,cmp); int sum=1,h=a[0].e; for(int i=1;i<n;i++){ if(a[i].s>=h){ sum++; h=a[i].e; } } cout<<sum; return 0; }
?
✘𝕸𝖔𝖓𝖔𝖉𝖞✔
#include <bits/stdc++.h> using namespace std; int n; struct node{ long long s,e; }a[1000001]; bool cmp(node f,node b){ return f.e<b.e; } int main(){ cin>>n; for(int i=1;i<=n;i++){ cin>>a[i].s>>a[i].e; } sort(a+1,a+n+1,cmp); int sum=0; int l=a[0].e; for(int i=1;i<=n;i++){ if(a[i].s>=l){ sum++; l=a[i].e; } } cout<<sum; return 0; }
exlover