值周

值周

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

思路:贪心+离散化
对离散化有点误解,想把每个区间的点映射成一个小的点,但因为每个点的大小与结果有关,这样不好实现,想了我好久,看了大佬的代码后豁然开朗。
1.按左区间升序排序,如果左区间相同就按右区间升序排序,统计被移走的人数。
2.第一个区间被移走的人数是,标记右区间
3.如果区间i的左区间比end大,移走的人数是,标记右区间
4.如果区间i的右区间不小于end,移走的人数是,标记右区间
5.答案就是
Code:

#include<bits/stdc++.h>
#define  js  ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
using namespace std;
typedef long long ll;
const int maxn = 1e6+7;
pair<int, int> a[maxn];//先first升序,后second升序
int main() {
    js; int n,m,l,r;
    cin>>n>>m;
    for(int i=1;i<=m;++i) cin>>l>>r,a[i]=make_pair(l,r);
    sort(a+1,a+1+m);
    int sum=a[1].second-a[1].first+1,end=a[1].second;
    for(int i=2;i<=m;++i) {
        if(a[i].first>end) {
            sum+=a[i].second-a[i].first+1;
            end=a[i].second;
        }
        else if(a[i].second>=end) {
            sum+=a[i].second-end;
            end=a[i].second;
        }
    }
    cout<<n-sum+1<<"\n";
}

为雨巨打call

全部评论

相关推荐

最近和朋友聊天,她说了句让我震惊的话:"我发现我连周末点外卖都开始'最优解'了,一定要赶在高峰期前下单,不然就觉得自己亏了。"这不就是典型的"班味入侵"吗?工作思维已经渗透到生活的方方面面。
小型域名服务器:啊?我一直都这样啊?我还以为是我爱贪小便宜呢?每次去实验室都得接一杯免费的开水回去,出门都得规划一下最短路径,在宿舍就吃南边的食堂,在实验室就吃北边的食堂,快递只有顺路的时候才取。
点赞 评论 收藏
分享
喜欢走神的孤勇者练习时长两年半:爱华,信华,等华,黑华
点赞 评论 收藏
分享
5 收藏 评论
分享
牛客网
牛客企业服务