## A look at Code Jam 2018

### Published on 2018-06-01

Programming competitions are fun. There are several websites and companies (like Google and Facebook) that regularly organize contests. In this post, we look at several tasks from the Qualification Round of Google Code Jam 2018, including their solutions.

competitions     blog post

## Disjoint-set data structure

### Published on 2018-05-10

Various problems deal with elements and sets. Finding if two elements belong to the same set, and merging two sets into one is a common requirement for solving some graph-related problems. In this post, we will take a look at the disjoint-set (i.e. union-find) data structure.

algorithms     blog post

## Inclusion-exclusion principle

### Published on 2018-05-09

Often, we need to count the number of elements in a set, a union of multiple finite sets, or to enumerate different solutions to a problem. The inclusion-exclusion principle is a familiar technique for obtaining those values.

algorithms     blog post

## Applications of BFS

### Published on 2018-05-07

Breadth-first search is an algorithm that can be applied to a wide range of problems dealing with graph theory. Finding the shortest path in a maze, calculating the minimum number of operations required to go from one state to another, and more, are just some examples of using BFS.

algorithms     blog post

## Dijkstra's Shortest path algorithm

### Published on 2018-05-03

Have you ever wondered how Google Maps can calculate the shortest path between two cities so quickly? In this post, we will discuss Dijkstra's algorithm for calculating shortest paths starting from a given node in a graph.

algorithms     blog post

## Dynamic programming

### Published on 2018-04-29

Some problems can be solved by looking at smaller models, or by breaking the problem into easier subproblems. In this post, we will look at dynamic programming, and inspect a couple of examples with arrays, fibonacci numbers and more.

algorithms     blog post

## Brute force algorithms

### Published on 2018-04-25

Computers are incredibly fast, and that fact can be utilized to solve various tasks with the exhaustive search technique, also known as tackling problems with brute force. By keeping things simple, a lot of tasks can be resolved by directly enumerating all possible candidate solutions.

algorithms     blog post

## Cool features of C++11

### Published on 2018-04-23

C++ is powerful, but newer versions of the language make it really great for developing all kinds of software. Hash maps, automatic determination of data type and lambdas are just some of the awesome new features which will be presented in this post.

c++ basics     blog post

## Common mistakes in C++

### Published on 2018-04-20

There are some mistakes that (new) C++ developers just keep making. In this post, we attempt to look at some of them, including array size, uninitialized variables, comparing floating-point numbers and more (with examples).

c++ basics     blog post