1. 程式人生 > >DUTOJ-1225: Geralt的佛系昆特牌-差分陣列

DUTOJ-1225: Geralt的佛系昆特牌-差分陣列

用到了差分陣列來維護一段區間上的性質
關於差分陣列
https://www.cnblogs.com/COLIN-LIGHTNING/p/8436624.html

程式碼:

#include<stdio.h>

int a[1000002];
int b[1000002];
int d[1000002];
int sum[1000002];
int main(){

    int m,n;
    int l,r;
    scanf("%d%d",&n,&m);
    for(int i=0;i<n;i++){
        scanf("%d",&a[i]);
    }
    for(int i=0;i<n;i++){
        scanf("%d",&b[i]);
    }

    for(int i=0;i<m;i++){
        scanf("%d%d",&l,&r);
        d[l-1]++;
        d[r]--;
    }
    sum[0]=d[0];
    for(int i=1;i<n;i++){
        sum[i]=sum[i-1]+d[i];
    }
    for(int i=0;i<n;i++){
        printf("%d%c", a[i] + b[i] * sum[i], i == n-1 ? '\n' : ' ');
    }
return 0;
}