校门外的树

校门外的树

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

思路:
能暴力就先先一下暴力,题目差不多就会一半了。
1.每次输入左右区间就把数组对应位置+1表示这棵树被移走,重复的部分多次+1不要紧,我们的结果是有多少个元素值是0。
2.,好像不会超时,考虑更优的做法。
差分+前缀和
1.给一个区间加上一个值,我们只要考虑两个端点,中间的元素不需要考虑。
2.前缀和,理解为第位的值比第位大
3,接着考虑区间赋值的问题,区间加上1,那么第L个位置比第L-1个位置大1,第R+1个位置比第R个位置小1,所以可以先预处理,最后再一遍前缀和得到最终的数组,里面0的个数就是剩余树的个数。
想过离散化,挺有意义的,数据也不大,懒得写了,鸽了
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;
int a[10005],ans;
int main() {
    js; int l,m,x,y;
    cin>>l>>m;
    for(int i=1;i<=m;++i) {
        cin>>x>>y;
        a[x]+=1;
        a[y+1]-=1;
    }
    for(int i=0;i<=l;++i) {
        a[i]+=a[i-1];
        if(!a[i])    ++ans;
    }
    cout<<ans<<endl;
    return 0;
}

为雨巨打call

全部评论
哥们,你最后差分数组求和的时候有个 0-1啊,数组不越界啊
1 回复 分享
发布于 2023-10-15 21:09 四川

相关推荐

10-28 11:04
已编辑
美团_后端实习生(实习员工)
一个2人:我说几个点吧,你的实习经历写的让人觉得毫无含金量,你没有挖掘你需求里的 亮点, 让人觉得你不仅打杂还摆烂。然后你的简历太长了🤣你这个实习经历看完,估计没几个人愿意接着看下去, sdk, 索引这种东西单拎出来说太顶真了兄弟,好好优化下简历吧
点赞 评论 收藏
分享
评论
18
收藏
分享
牛客网
牛客企业服务