校门外的树

校门外的树

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 四川

相关推荐

11-26 22:34
已编辑
重庆邮电大学 Java
快手 客户端开发 (n+5)k*16 公积金12
点赞 评论 收藏
分享
11-05 07:29
贵州大学 Java
点赞 评论 收藏
分享
头像
11-21 11:39
四川大学 Java
是红鸢啊:忘了还没结束,还有字节的5k 违约金
点赞 评论 收藏
分享
18 收藏 评论
分享
牛客网
牛客企业服务