0
已解决
WA30
#include<iostream>
#include<string>
#include<algorithm>
#include<cstdio>
#include<cmath>
using namespace std;
int n,cnt;
struct sj{
int st,ed;
}a[10005];
bool cmp(sj x,sj y){
if(x.st!=y.st) return x.st<y.st;
return x.ed>y.ed;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].st>>a[i].ed;
}
sort(a+1,a+1+n,cmp);
int end=0;
for(int i=1;i<=n;i++){
if(a[i].st>=end){
cnt++;
end=a[i].ed;
}
}
cout<<cnt;
return 0;
}
请各位大佬看看,错在哪里?
0
已采纳
bool cmp(stu a,stu b){
if(a.e!=b.e) return a.e<b.e; //按照课程结束时间先后来排序
return a.s>b.s; //若结束时间相同,开始时间较晚的排在前(题目要求)
}
这是贪心中一个非常难的知识点,建议先不要搞了
如果有兴趣的话到学校我跟你讲
CMP函数参考一下
0
0
题目在这里
放暑假了,小明决定做兼职挣钱,现在小明收到了N份兼职通知,并且他已经知道了每份兼职的开始和结束时间,小明因为想挣很多钱,于是他决定参加尽可能多的兼职,但是很明显啊,如果做了一份兼职就必须做完,他也不可能同时做两份兼职,现在他想知道他最多能做几份兼职。
输入描述 Input Description
第一行是一个整数n ,接下来n行每行是2个整数ai,bi(ai<bi),表示工作开始、结束的时间。
输出描述 Output Description
一行一个整数:表示最多能做的兼职数。
0
0