问题标题: 酷町堂:3006 暑期兼职

0
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
张恩泽
张恩泽
高级天翼
高级天翼

贪心中的区间问题

按开始时间排序

我要回答