Giter Club home page Giter Club logo

beoi-training's Introduction

beOI/beCP Training Resources

This repository hosts all the course materials created for the beOI (Belgian Olympiad in Informatics) and beCP (Belgian Competitive Programming) training camps. Remember though that You don't need advanced topics for bronze and maybe even for silver (Bruno Ploumhans, 2018, Line 21).

The program is now structured into a set of teaching units, designed to cover the whole IOI syllabus (and some additional material from the CP3 book). Each unit contains the slides used and a README which outlines the content of the unit, lists the prerequisites and gives links to related exercises. The units are not originally meant to be in a logical order.

The resources made prior to the units system are available in the archive directory.

Teaching units

Here is the list of completed and planned teaching units. As they are still under construction, the units might not contain all the topics mentioned in the parentheses.

  1. Algorithms and complexity (big oh, practical limits)
  2. Linear data structures (array, bitset, vector, linked list, stack, queue)
  3. Sorting algorithms (selection, insertion, merge, quick)
  4. Tree data structures (set, map, heap)
  5. Balanced binary search tree (treap, red-black, order statistics with library)
  6. Graph basics and representation (adjacency matrix, adjacency list)
  7. Union-find structure
  8. Segment tree (regular, lazy)
  9. Fenwick tree (binary indexing, least significant bit)
  10. Recursive backtracking (pruning, bitmasks)
  11. Binary search (nontrivial applications, binary search the answer)
  12. Greedy (basic idea, coin change, load balancing, interval scheduling)
  13. Dynamic programming I (top-down, bottom-up, classical problems)
  14. Graph traversal (DFS, BFS, toposort, bipartite check, Kosaraju SCC)
  15. Specialized DFS (cycle check, articulation point, bridge, Tarjan SCC)
  16. Minimum spanning tree (Kruskal, Prim, variants, minimax/maximin path)
  17. Single-source shortest path (review BFS, Dijkstra, Bellman-Ford)
  18. All-pairs shortest path (Floyd-Warshall, applications)
  19. Network flow (Edmonds-Karp, min cut, vertex capacity, vertex/edge-disjoint paths, MCMF)
  20. Directed acyclic graph (longest/shortest/counting paths, tree MVC)
  21. Eulerian path (eulerian check, finding the path/cycle, Chinese postman problem)
  22. Bipartite graph and MCBM (augmenting path algorithm, MIS, MVC, min path cover on DAG)
  23. Miscellaneous math (fast pow, Fibonacci, powers of adjacency matrix, tortoise and hare)
  24. Number theory (GCD, prime factors, sieve, extended Euclid)
  25. Game theory (subtraction/Nim game, minimax, alpha-beta)
  26. String processing (trie, Rabin-Karp, Z-algorithm, KMP)
  27. Computational geometry (basics, polygon area, convex hull)
  28. Advanced search techniques (heavy pruning, meet in the middle, A*)
  29. Dynamic programming II (bitmask, drop one parameter, bitonic TSP, sliding window)
  30. Problem decomposition
  31. Advanced graph problems (2-SAT, MWIS (tree, bipartite))
  32. Sparse table, lowest common ancestor

beoi-training's People

Contributors

azercoco avatar blegat avatar damien-gal avatar fkint avatar guillaumederval avatar jorikjooken avatar jvanmelckebeke avatar mcouplet avatar nicoekkart avatar petar-vitorac avatar robinjadoul avatar smadbe avatar technici4n avatar vlecomte avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

beoi-training's Issues

README for each unit

For each unit, we should have a README that will show automatically and contains the following information:

  • brief overview of the content
  • reference to section in Green Book
  • prerequisites for the unit (see #1)
  • problems to solve (increasing order of difficulty)

See unit 13 as an example.
Could each of you that created a unit write a README? I think it will be helpful for contestants.

Prerequisites

I think we should have in each unit a file prerequisites.md indicating which units you should have already seen before you can dive into the topic. I've done that for unit 13. What do you think of it? When all units will have its prerequisites, we can then build a graph and toposort it to know the best order we should teach the topics (assuming the graph is acyclic of course).

Unify the units as much as possible

Adapt the slides, such that everything is nice and homogenous.

Some changes that may be needed:

  • The color scheme of the slides (let's just go with white? maybe a custom style ๐Ÿ˜„)
  • I wouldn't keep the dates on the slides; maybe remove the names as well
  • Make sure the README is there and easily available
  • Make all big-oh's fancy (\mathcal{O}) :)
  • Get a consistent name for where source code for that unit is stored (instead of having 'code', 'src', 'lst', ...)

Some things need deciding what to do with them, so say what you think...

If there are more points that need unifying, say so here as well

JSON standard unit format (proposal)

Hi,

I propose to have a JSON file for each unit, with standard format. This would allow me to easily (and dynamically) show problems by unit for every contestant on the beoi-training website... It could also be used to create the README.md files in a standardized way, but that's not the main purpose.

Here is my (personal) suggestion (I picked the unit 7 as example):

{
	"unit": 7,
	"title": "Union Find Disjoint Sets",
	"description": "This unit covers the Union-Find data structure for disjoint sets\n\nComplementary notes can be found in section 2.4.2 of the book Competitive Programming 3.",
	"short_description": "",
	"presentation": "union-find.pdf",
	"prerequisites": [1, 2, 4],
	"problems":
	[
		["uva", 793, "recommended as beginning exercise"],
		["uva", 10158, "a bit more challenging"],
		["uva", 10583, "recommended as beginning exercise"],
		["uva", 10608],
		["uva", 11503],
		["uva", 11690],
		["codeforces", "278C"],
		["codeforces", "722C"]
	]
}

This should be enough to create the main README.md with all titles and short descriptions, and a README.md and links to all problems and to the main pdf (That's a lot of "and")...

I can write all the scripts without any problem, but I'll use Ruby then. :-)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.