题解 | #活动安排#

活动安排

https://ac.nowcoder.com/acm/problem/50161

活动安排:贪心思想,区间合并的一种转换,首先你需要对左区间从小到大进行排序,当左区间相等时右区间从小到大排序为最优解,初始答案为1,左端点为最小的左端点,右端点为对应右端点,当右端点大于等于此时的左端点答案加一,更新此时的右端点为现在的右端点,当右端点大于此时的右端点此时答案不变但当前集合最优解为现在的右端点,更新右端点,至于右端点在此时左右端点之间的情况没有任何影响,不需要考虑,最后输出答案,以下是代码:

#include <iostream>
#include <algorithm>
using namespace std;
struct w 
{
    int l;
    int r;
};
bool cmp(struct w x,struct w y)
{
    if(x.l!=y.l)
        return x.l<y.l;
    else
        return x.r<y.r;
}
struct w a[1010];
int main()
{
    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a[i].l>>a[i].r;
    }
    sort(a,a+n,cmp);
    int ans=0;
    int l1=a[0].l;
    int r1=a[0].r;
    int cnt=1;
    for(int i=1;i<n;i++)
    {
        if(r1<=a[i].l)
        {
            l1=a[i].l;
            r1=a[i].r;
            cnt++;
        }
        else
        {
            if(r1>=a[i].r)
                r1=a[i].r;
        }
    }
    cout<<cnt;
    return 0;
} 
全部评论

相关推荐

10-09 00:50
已编辑
长江大学 算法工程师
不期而遇的夏天:1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务