nikizakr's blog

By nikizakr, history, 6 years ago, In English

Hi Codeforces :D I'm looking for some problems about 3D prefix sum can you provide some links thanks a lot

  • Vote: I like it
  • +4
  • Vote: I do not like it

| Write comment?
»
6 years ago, # |
Rev. 4   Vote: I like it +3 Vote: I do not like it

After writing this comment I realized that your post was asking about problems rather than requesting a tutorial :). I hope someone will find this useful anyway.

Well, I think I could explain it right there. So, for 1D prefix sums you simply do S[i + 1] = S[i] + a[i], nothing special here. For 2D, on the other side, you have to subtract overlapping region: S[i][j] = S[i - 1][j] + S[i][j - 1] - S[i - 1][j - 1] + a[i][j]. For 3D there will be even more overlapping: S[i][j][k] = S[i - 1][j][k] + S[i][j - 1][k] + S[i][j][k - 1] - S[i - 1][j - 1][k] - S[i][j - 1][k - 1] - S[i - 1][j][k - 1] + S[i - 1][j - 1][k - 1] + a[i][j][k]. You can find similarity with inclusion-exclusion formulas. So, with adding new dimensions it becomes more burdensome exponentially. You can check out this code:

Code
  • »
    »
    6 years ago, # ^ |
      Vote: I like it +9 Vote: I do not like it

    The formula for two dimensions is wrong. I think it's a typo.

    The correct formula is S[i][j] = S[i][j-1] + S[i-1][j] - S[i-1][j-1] + A[i][j]. You wrote S[i][j+1] instead of S[i-1][j].

»
6 years ago, # |
  Vote: I like it 0 Vote: I do not like it

Here's a task from UVa online judge 10755 — Garbage Heap.