文章
8
粉丝
14
获赞
7
访问
588
无敌简短的代码,差分数组的应用,初始数组每个元素值为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;
}
登录后发布评论
暂无评论,来抢沙发