• 差分,差分数组


    差分,就是求本位与前一个的差.

    d[i]=a[i]-a[i-1]

    一维差分一遍for循环就出来了呀.

    有什么用呢?

    这种:

    1、将区间【1,4】的数值全部加上3

    2、将区间【3,5】的数值全部减去5

    在某一个数组全部加上或者减去某个东西,就可以用差分数组.

    举个例子嗷嗷嗷

     

     1 #include <iostream>
     2 #include <set>
     3 #include <cstring>
     4 #include <stdio.h>
     5 using namespace std;
     6 //二维前缀和
     7 int b[5][5]={0};
     8 int a[5][5];
     9 int a1[5];
    10 int b1[5];
    11 
    12 
    13 
    14 
    15 
    16 int org[100]={0};
    17 int bios[100]={0};
    18 int n;
    19 int main(){
    20     while(scanf("%d",&n) && n){
    21         int begin;
    22         int end;
    23         for (int i = 1; i <= n; ++i) {
    24             scanf("%d",&begin);
    25             scanf("%d",&end);
    26             bios[begin]++;
    27             bios[end+1]--;
    28         }
    29         for (int j = 1; j <= n; ++j) {
    30             org[j]=org[j-1]+bios[j];
    31 
    32 
    33         }
    34         for (int k = 1; k <= n ; ++k) {
    35             cout<<org[k]<<" ";
    36 
    37         }
    38 
    39     }
    40 
    41 
    42 
    43 
    44 
    45 
    46 }
  • 相关阅读:
    Date计算人活了多少天
    微信红包平均分法
    math practise
    Array sort
    static memory management
    java数组中的选择排序
    java数组中的冒泡排序
    数组联系2 模拟酒店系统
    数组练习1(模拟栈)
    二维数组
  • 原文地址:https://www.cnblogs.com/zhmlzhml/p/13285668.html
Copyright © 2020-2023  润新知