专栏文章

题解:SP28265 ADARAIN - Ada and Rain

SP28265题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@mioulu18
此快照首次捕获于
2025/12/03 01:24
3 个月前
此快照最后确认于
2025/12/03 01:24
3 个月前
查看原文

题目大意

给一个长为 WW 的数组,对其进行 NN 个操作,每次将 [L,R][L,R] 的区间加上 11,操作后进行 MM 个查询,每次查询数组中下标为 aa 的数值。

题目分析

题目中数据保证 0N,M1050 \le N,M \le 10^5 ,若直接用暴力,复杂度为 O(MW)O(MW),显然会超时,所以可以采用差分的方法,每次,对数组进行操作时直接将下标为 LL 的数值加 11,将下标为 R+1R + 1 的数值减 11,求一遍前缀和即可,复杂度为 O(M)O(M)

Code

CPP
#include <bits/stdc++.h>
using namespace std;
int n,q,m,x,y,l[10010000];
int main() {
    cin>>n>>q>>m;
    for(int i=1;i<=n;i++){
        cin>>x>>y;
        l[x]++;l[y+1]--;
    }
    for(int i=1;i<=m;i++){
        l[i]+=l[i-1];
    }
    for(int i=1;i<=q;i++){
        cin>>x;
        cout<<l[x]<<"\n";
    }
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...