c题值周问题 ,样例过了,代码感觉也没问题 为什么过不了

使用贪心算法,对区间进行排序,以末尾节点递增排序
#include<iostream>
#include<algorithm>
using namespace std;
struct loc{
    int first;
    int last;
};
const int MAX=1000008;
loc area[MAX];
bool com(loc a,loc b)
{
    if(a.last<b.last)
        return true;
    else if(a.last==b.last)
    {
        if(a.first<b.first)
            return true;
        else
            return false;
    }
    else
        return false;
}
int main()
{
    int n,m;
    cin>>n>>m;
    for(int i=0;i<m;++i)
    {
        cin>>area[i].first>>area[i].last;
    }
    sort(area,area+m,com);
    int flag=0;
    int sum=0;
    for(int i=0;i<m;++i)
    {
        if(flag<area[i].first)
            sum+=(area[i].last-area[i].first+1);
        else
            sum+=(area[i].last-flag);
        flag=area[i].last;
    }
    cout<<n+1-sum<<endl;
}

全部评论
1 你longlong用cin读似乎会t,建议scanf+快读 实在不行手动开o2 2 我觉得应该以头节点排序吧,以末尾排序可能会有反例哦,实在不行看下题解吧,里面讲的还算清楚吧 真的不行可以看看别人写法或问我要std哦
点赞 回复 分享
发布于 2019-07-01 22:53
求大佬解答 代码哪里有问题
点赞 回复 分享
发布于 2019-07-01 14:51

相关推荐

不愿透露姓名的神秘牛友
03-18 14:29
牛客604067584号:感觉算法卷的人少很多,毕竟只有一部分bg还不错的硕士才会考虑算法,虽然hc不如后端,但是竞争真的少很多。
点赞 评论 收藏
分享
ResourceUtilization:我嘞个董事长
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务