Informations
salle PC 20 de 10h30 à12h et 13h30 à 15h00, ensuite en salle informatique 33 de 15h15 à17h45
Si vous n'êtes pas inscrit au Modal, mais voulez quand
même participer au concours ACM, alors inscrivez
vous ici.
Vous serez informé du lieu, l'heure et des
modalitées. Merci. Et contactez le binet ACM.
Documents
Livres:
-
Steven Skiena,
Programming challenges,
[se trouve à la bibliothèque cote=681.3 SKI.PRO. Contient des exemples mais peu d'éléments pour les résoudre.]
- Steven Skiena, The Algorithm Design Manual, très complet.
-
Ahmed Shamsul Arefin, Art of Programming Contest
[livre de programmation, librement accessible]
- The Hitchhiker's Guide to Programming Contests [rédaction pas soignée, mais beaucoup d'exercices corrigés]
-
Cormen, Leiserson, Rivest, Stein, Introduction to Algorithms [la bible des algorithmes, mais trop détaillé]
-
Dexter Kozen. The Design and Analysis of Algorithms [notes de cours concis. C'est mon livre préféré d'algorithmique]
- J'ai beaucoup appris des codes en python de David Eppstein et en C++ de Hao Fu
Liens:
- Swerc
-
Aussi voici deux sites à mettre dans vos signets, les documentations des bibliothèques de C++ et de Java.
- Le site ACMsolver contient des informations interessantes.
- Les examens des années passées.
01 | Ve 01/02 Introduction
[exploration avec backtracking, techniques de lecture de l'entrée, structures de données]
Inscrivez vous ici (site 'S')
- [S] Problem 1 (n reines)
- [S] Repair City Hall
- [S] Phone List
- [S] A concrete simulation
- [S] compile error
Et pour ceux qui veulent aller plus loin :
- [S] Sudoku 9x9
- [S] Sudoku 16x16
02 | Ve 08/02 algorithmes gloutons
[comment trier, union-find, codes de Huffman, graphe bi-partie avec degrées prescrits]
- [S] Colours A, B, C, D
- [Z] T9
- [T]
[B]
[D] Networking
- [T]
[D] Variable Radix Huffman Encoding
- [T]
[D] Magic Sticks Again
- [D] Disk Tree
Et encore pour ceux qui veulent aller plus loin :
- [T]
[D]
[C] Huffman Trees
03 | Ve 15/02 programmation dynamique
[plus court chemin dans une grille orienté, distance d'édition, plus longue sous-séquence commune, plus longue sous-séquence croissante, multiplication d'une séquence de matrices]
Juge en panne ? Retrouvez les énoncés ici.
- [T] [C] [D] Longest Ordered Subsequence
- [T] [D] Tetris
- [T] [C] [D] The Separator
- [T] [C] [D] Common Subsequence
- [T] [A] [Z] Stacking Boxes
Lisez ces exemples pour apprendre comment ne pas faire.
04 | Ve 22/02 programmation dynamique
[subsetsum, coin change, voyageur de commerce, bin packing, minimum hitting set pour un graphe d'intervalles, plus grand rectangle sous un histogramme]]
Ce jour le cours sera exceptionnelement en salle PC 21.
- Soumettez ici
- [T] [C] [D] Color a Tree
- [T] [C] [D] Radar Installation
- [T] [D] Is Bigger Smarter?
- [T] [C] [D] To The Max
- [T] [C] [D] Largest Rectangle in a Histogram
- [T] [D] Homework
- [T] [D] Playground
- [T] [D] Binary Trees
05 | Ve 01/03 calculer
[algorithme d'Euclide, crible d'Eratosthène, résoudre un système d'équations linéaires, multiplier des matrices circulaires, le test de Freivalds, analyse syntaxique d'une expression arithmétique]
- [D] Spreadsheet --- a programmer seul !
- [T] [A] Ars Longa
- [D] Prime Gap
- [S] Tiling a Grid With Dominoes
- [T] [D] Boolean Expression
- [T] [D] Simplified λ-evalutations
Voici des problèmes donnés pendant des entretiens d'embauche.
06 | Ve 15/03 exploration de graphes
[avec pile (DFS), avec file (BFS), avec file à deux bouts (plus courts chemin avec poids {0,1} sur les arcs), composantes fortement connexes, résoudre 2-SAT, points d'articulation et ponts]
- Soumettez ici
- [T] [C] [D] Finding Nemo
- [T] [X] [D] Mine
- [C] [D] Traffic Jam
- [C] [D] Street Directions
- [C] [D] Minesweeper
- [C] [D] Australian Voting
- [C] [D] The Trip
- [C] [D] LC Display
07 | Ve 22/03 couplages
[couplages dans les graphes bi-partis, chemin augmentant, algorithme en O(nm) pour couplage de cardinalité max, couplage parfait de profit maximal, cycle augmentant]
Avant de commencer, vous devez, je dis bien, devez, répondre à ce questionnaire.
- [G] Egg Drop
- [T] [C] [D] Courses
- [X] [D] Poor Wenwen
- [C] [D] Pizza delivery
- [A] [D] Babel Towers
- [T] [X] [D] Make it Manhattan
- [Z] Manhattan
Une suggestion de comment boucler en C++.
08 | Ve 05/04 flots
[flot maximal, chemin augmentants, algorithme Ford-Fulkerson, algorithme Edmonds-Karp, algorithme de Dinic]
- [D] November Rain
- [D] Optimal Array Multiplication Sequence
- [D] IP Networks
- [D] Incidental Points
- [D] Feel Good
- [D] Common item
- [D] Brackets sequence
- Bonus: Un algorithme sophistiqué pour calculer un couplage bi-parti planaire sans croisement en O(nlogn). L'ingrédient principal est un algorithme en temps linéaire pour le problème de ham sandwich cut. Ici vous pouvez en apprendre plus.
09 | Ve 12/04 géométrie
[balayage, paire de points les plus proches, paire de points les plus loins, enveloppe convexe, nombre d'intersections de segments, plus petit disque englobant]
- [T] [C] [D] Wooden Sticks
- [T] [C] [D] Herding Frosh
- [T] [H] [D] Rectilinear polygon
- [S] [A] [D] Seminar Room
- [E] Cutting Sticks
- [E] Crimewave
10 | Ma 23/04 contrôle
13:30-15h20 sur papier en salle PC 20, 15h35-17h30 sur machine en salle info 34
Pendant l'examen vous pouvez ammener le poly et 25 pages de code ou de notes. Sur machine vous aurez accès aux documentation de l'API de JDK et de la STL.