题解 | #值周#

值周

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

值周

使用差分数组对序列进行区间修改

对于这种区间很长,然后整个区间整个区间进行加减的,要想到使用差分数组,即对数组的区间进行操作,只有端点处的差分值发生了变化,区间之间的差分值没有发生变化,从而整区间地进行操作。 这题还可想到,因为差分值d[0]表示的是a[1]-a[0],这样的话a[0]的值就无法记录。我们可以想象a[0]前面有个不变的0,这样d[0]就等于a[0]-0,从而a[0]也能被记录下来了。

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int l,m;
    cin>>l>>m;
    int d[l+3];
    d[0]=1;
    for(int i=1;i<=l;i++)
        d[i]=0;
    while(m--)
    {
        int a,b;
        cin>>a>>b;
        d[a]--;
        if(b+1<=l)
        d[b+1]++;
    }
    int sum=0;
    int t=0;
    for(int i=0;i<=l;i++)
    {
        t=t+d[i];
        if(t>0)
            sum++;
    }
    cout<<sum;
}
全部评论

相关推荐

微风不断:兄弟,你把四旋翼都做出来了那个挺难的吧
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务