蓝桥杯分苹果之差分数组

    科技2025-04-02  18

    一、知识点 差分数组: 1、定义:某一数组的前一项-后一项的查,即差分数组da[i]=stu[i]-stu[i-1] (i>0),stu[0]=0; 2、作用范围:只能是区间元素同时增加或减少相同的数的情况才能用 3、作用:数组连续区间同时增或者同时减时,避免区间修改的数据量大时导致超时 4、例子:在a和b区间同时增加c,则da[a]+=c;da[b+1]-=c; 之后stu[i]=da[1]+da[2]+…+da[i] (i>0) 二、例题 1、分苹果 2、代码

    #include<stdio.h> #include<string.h> int da[100005]; int main(){ int a,b,c; int i,j; int n,m; int sum=0; memset(da,0,sizeof(da)); scanf("%d %d",&n,&m); for(i=1;i<=m;i++){ scanf("%d %d %d",&a,&b,&c); da[a]+=c; da[b+1]-=c; } sum+=da[1]; printf("%d",sum); for(i=2;i<=n;i++){ sum+=da[i]; printf(" %d",sum); } return 0; }

    参考资料 差分数组

    Processed: 0.011, SQL: 8