Quelle est la meilleure ressource pour un débutant pour se lancer dans une programmation compétitive pour l’USACO et l’IOI?

Je ne peux pas répondre à la deuxième partie de votre réponse, mais je peux répondre à la première.

Au début de l’été dernier, je n’ai pas pu résoudre les questions de bronze de l’USACO et j’ai eu du mal à mettre en œuvre les solutions les plus élémentaires même après avoir appris comment. Pourtant, à la fin de cette année, j’ai réussi à faire la promotion en or lors de mon tout premier concours USACO.

Beaucoup de gens disent que résoudre de nombreux problèmes serait suffisant. Je suis d’accord avec cela, jusqu’à un certain point. Vous devez faire beaucoup, beaucoup de problèmes afin d’avoir même une chance de faire des IOI pour l’équipe des USA (je suppose que vous essayez de le faire, vu que vous avez aussi posé des questions sur USACO). Cependant, que vous puissiez ou non résoudre un problème, il est toujours important d’examiner la solution prévue et de bien comprendre comment elle fonctionne et comment elle est mise en œuvre. Vous devez rechercher les parties du problème / solution que vous ne comprenez pas pour améliorer.

Vous devez d’abord commencer avec les pages de formation USACO: Page sur usaco.org. La première page des problèmes doit être adaptée à vos compétences, et il existe de nombreux guides d’introduction et utiles sur les techniques et algorithmes spécifiques sur les pages de formation de l’USACO. Les problèmes ici vous permettront également de vous familiariser avec le format de solution d’USACO.

En parcourant les pages de formation de l’USACO, vous devez également essayer de résoudre les problèmes sur Timus Online Judge. Faites les problèmes par ordre croissant de difficulté. Le seul problème avec ces problèmes est qu’il serait très difficile de trouver la solution prévue à un problème, il est donc possible de rester bloqué sur un problème pendant très longtemps. Pour cette raison, vous devriez également essayer de résoudre les problèmes A et B de Codeforces Division 2 pour vous familiariser avec la programmation compétitive. Il existe des solutions pour presque tous les problèmes, et vous pouvez toujours demander de l’aide sur leur site Web. Au fur et à mesure que vous améliorez vos compétences, vous devriez également commencer à essayer des problèmes plus difficiles, tels que le problème C de la division 2 et certains problèmes de la division 1.

Chaque fois que vous ne comprenez pas une méthode ou un morceau de code, recherchez-le! J’ai trouvé le réseau de ressources C ++ très utile pour cela. Comme ce que Filip a dit, il suffit de coder, de coder et de coder. Bonne chance!

La seule chose que vous pouvez faire est de coder, coder et coder. C’est la meilleure façon d’apprendre. Apprendre en faisant. 🙂

Chaque fonction implémentée en C ++, par exemple: binary_search, lower_bound, upper_bound, max_element, min_element,… écrivez votre propre code pour cela, c’est-à-dire implémentez-le vous-même. Voilà comment vous apprenez.

Pour apprendre les algorithmes, c’est la même chose. Comprendre l’algorithme, l’implémenter dans n’importe quel langage de programmation, faire les exercices et répéter.
Vous pouvez faire des problèmes USACO passés (1, 2), faire de la formation USACO (3), faire des problèmes COCI (4), et aussi concourir sur USACO et COCI.

Si vous voulez évaluer et vérifier si votre code est correct, vous pouvez utiliser ev (6). 🙂

Et c’est tout 🙂

1. USACO: Olympiade informatique des États-Unis
2. TJSCT: TJ Senior Computer Team (contient les problèmes passés de l’USACO)
3. Formation USACO: Page sur delosent.com:791
4. COCI: Concours ouvert croate d’informatique
5. National OI: Olympiades nationales en informatique
6. ev: hermanzdosilovic / ev
7. Tutoriels d’algorithmes TopCoder: Tutoriels d’algorithmes
8. C ++: Amazon.com: Saut en C ++ (9780988927803): Alex Allain: Livres