Java Community Dnepr

Presentation Solution

This is the project where you can train you algorithmic skills in:

  • Pre-requirements and terms (example with minimum in arrays)
    • Invariant
    • Relaxation of answer
    • Optimal answer constructive
    • Dynamic programming
    • Correctness
    • Marker that solution is not exists
    • Tail recursion over iteration
    • Invariant inversion
    • Inclusion Exclusion principle
    • Partial sum/Prefix sum
    • Bit sets
    • Performance testing

Array of integers in ascending order:

  • How to find lower bound
  • How to find upper bound
  • How to find range size

Heap (PriorityQueue)

  • siftUp
  • siftDown

Single source minimum cost

  • Dijkstra

DisjointUnionSet

  • Union two
  • Check if two are in the same set
  • Amount of connected component
  • Rank balancing
  • Pass zipping

Minimal spanning tree

  • Kruskal algo

Binary indexed tree

  • Subarray sum query
  • Single element modification

Binary indexed tree 2D

  • Submatrix sum query
  • Single element modification

Pictures was build with this tool Resources:

BIT Naive implementation https://www.youtube.com/watch?v=v_wj_mOAlig

Egor Kulikov yaal

BIT 2D https://www.geeksforgeeks.org/two-dimensional-binary-indexed-tree-or-fenwick-tree/