文章

8

粉丝

14

获赞

7

访问

588

头像
刷出一道墙 题解:
P1209
发布于2025年1月15日 21:27
阅读数 52

无敌简短的代码,差分数组的应用,初始数组每个元素值为0,每次刷给出起点和终点,只需修改差分数组即可,最后累加起来其实每个点刷的次数,需要使用scanf和printf作为输入输出减少时间。(参考了acwing上的模板)

#include<bits/stdc++.h>

using namespace std;

const int N = 2000010;
int a[N];

void insert(int l,int r,int x){
    a[l] += x;
    a[r+1] -= x;
}

int main(){
    int m,n;
    while(scanf("%d%d",&m,&n)!=EOF) {
        if(m == 0 && n == 0) break;
        insert(m,n,1);
    }
    for(int i = 1;i <= N;i ++) a[i] = a[i] + a[i-1];
    int l,r;
    while(scanf("%d%d",&l,&r)!=EOF){
        if(l == 0 && r == 0) break;
        for(int i = l;i <= r;i ++) printf("%d\n",a[i]);
    }
    return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发