본문 바로가기
알고리즘/알고리즘 종류

종류는 아니고.. 누적합, 역누적합

by kcj3054 2022. 1. 8.

누적합, 역누적합

  • 간단하다 a ~ b까지 합을 구하면된다..
  • 역누적합은 누적합하기전의 상태를 말한다.

    • 배열에 a부터 b까지(어떤 배열의 누적합) k만큼 늘어난다.

    • A[a] += k, A[b + 1] -= k


=> 0 3 3 3 0 0 0 

=> 0 0 0 0 0 0 0


=>역 누적합..

=> 0 3 0 0 -3 0 0

=> update된 누적합 
=> 0 3 3 3 0 0 0

관련 문제

태상이의 훈련소 생활

https://www.acmicpc.net/problem/19951 (태상이의 훈련소 생활)

소스

#include <bits/stdc++.h>

using namespace std;

int n, m;

int a[100000];
int b[100000];
int main()
{

    cin >> n >> m;

    for (int i = 1; i <= n; i++) cin >> a[i];

    for (int i = 0; i < m; i++)
    {
        int s, e, k;
        cin >> s >> e >> k;
        //
        b[s] += k;
        b[e + 1] -= k;
    }

    for (int i = 1; i <= n; i++)
    {
        b[i] += b[i - 1];  // 누적합 과정 
        a[i] += b[i]; //update과정 
        cout << a[i] << " ";
    }

    return 0;
}

/*
=>역 누적합..

=> 0 3 0 0 -3 0 0

=> update된 누적합
=> 0 3 3 3 0 0 0
*/

'알고리즘 > 알고리즘 종류' 카테고리의 다른 글

파라메트릭서치  (0) 2021.12.13
트리, maxheap, minheap, 동적 배열, 해싱  (0) 2021.10.23
dp.. 개념  (0) 2021.08.02