[PYTHON] Jusqu'à ce qu'il devienne bleu clair avec AtCoder

Auto-introduction

Bonjour. Je suis un étudiant de troisième année à l'université qui est devenu codeur bleu clair l'autre jour. Le langage est python, et je l'ai commencé en juin de l'année dernière (2019). Je ne suis pas très doué pour écrire des phrases, mais j'espère que vous le verrez jusqu'à la fin.

Contexte de démarrage d'une programmation compétitive

Je suis entré à l'université et j'ai commencé à étudier les systèmes d'information, j'ai pris des informations de base en octobre de la même année, appliqué des informations en avril de l'année suivante et je me suis demandé quoi étudier ensuite, mais un ami non-système d'information a appris la machine avec python J'ai trouvé que je le faisais tout seul, et c'est ridicule. J'ai commencé à étudier le python. A cette époque, je connaissais le langage python, mais je ne savais rien de la grammaire spécifique, et à l'école j'apprenais un langage moins connu appelé Processing, donc je me souviens m'être senti très impatient. Si des étudiants de premier cycle non liés à l'information commencent à programmer, leur valeur marchande diminuera! Ensuite, j'ai construit rapidement l'environnement et j'ai commencé à étudier la grammaire. Cependant, bien que je puisse entrer correctement, il n'y a pas de scène à sortir, j'ai donc cherché d'autres sites d'étude de programmation tels que Progate, mais quand je me demandais ce qui s'était passé parce qu'il n'y avait rien qui allait bien, mon ami sur Twitter (Mis à part les amis ci-dessus), il a répondu: "Faites-vous de la programmation compétitive?" J'ai répondu, faisant semblant d'être calme, "Qu'est-ce que c'est?" Mais c'est vraiment intéressant, j'adore la programmation et j'aime rivaliser avec les gens. J'ai cherché à la hâte et j'ai trouvé AtCoder. Il n'a pas fallu longtemps pour entrer dans le marais de la programmation concurrentielle à partir de là. C'est devenu une machine à résoudre les problèmes.

Connaissance que vous avez

BFS, DFS, arborescence de segments, DP, dichotomie, inverse, UnionFind, Dyxtra, Worshall Floyd et plus. J'ai utilisé les mathématiques à l'examen, donc j'ai un minimum de connaissances. Cependant, pour être honnête, je pense que les seules connaissances requises pour devenir bleu clair sont la dichotomie, BFS et DFS. Vous pouvez probablement y aller si vous connaissez la solution rapide et précise. Le bleu est impossible de cette façon.

Ce que j'ai fait avant qu'il ne devienne bleu clair

En conclusion, j'ai résolu le problème. Cependant, je ne pense pas que les efforts doivent toujours être dirigés dans la mauvaise direction. C'est soit s'ennuyer en premier, soit obtenir des résultats en premier. Plus vous êtes passionné par la programmation compétitive, plus vous devez réfléchir à la façon de travailler. Il y a quelques points à prendre en compte lors de la résolution d'un problème. Dans ce qui suit, je vais mettre en mots ce dont j'étais conscient.

Apprenez des algorithmes que vous ne connaissez pas sur place

Les humains ne se souviennent pas vraiment de ce dont ils n'ont pas besoin maintenant. Au contraire, ce dont nous avons besoin maintenant arrive souvent sans heurts. En d'autres termes, je pense qu'il est efficace d'apprendre les algorithmes dont vous avez besoin maintenant. Si vous résolvez un problème et trouvez un algorithme que vous ne comprenez pas, étudiez l'algorithme pour résoudre le problème. Je vais faire des programmes de compétition après avoir lu des livres de fourmis et appris tous les algorithmes! Vous devriez probablement arrêter.

Mettre en œuvre absolument

Après avoir résolu un problème, il y a des gens qui passent au problème suivant sans le mettre en œuvre simplement parce que cela a été fait dans leur esprit. Arrêtons définitivement cela aussi. La première raison est probablement qu'elle ne peut pas être mise en œuvre. Beaucoup de problèmes ignorés sans être implémentés sont lourds à implémenter, et il est probablement difficile de les implémenter jusqu'au bout sans bogues. Le second est l'inefficacité. Il y a deux phases pour résoudre le problème, la première est la considération. Il y a une phase pour réfléchir au type d'algorithme et de structure de données à utiliser pour résoudre ce problème, et une phase pour l'intégrer réellement dans le code. Quant à l'expérience, il y a beaucoup de gens autour de moi qui peuvent faire la première phase mais pas la deuxième phase. En d'autres termes, il y a beaucoup de gens qui n'ont pas assez de pratique dans ce domaine. Mettons-le en œuvre. Ce que nous faisons n'est pas un concours de considération pour la concurrence.

Résoudre des problèmes similaires

Comme pour tout, si vous ne pouvez pas faire de BFS, vous ne pouvez pas le faire sans résoudre le problème de BFS, et si vous ne pouvez pas faire de DP, vous ne pouvez pas le faire sans résoudre le problème de DP. C'est naturel. Heureusement, le problème est expliqué et devrait vous donner les connaissances nécessaires pour le résoudre. Résolvons les problèmes similaires que vous ne pouvez pas résoudre.

L'importance de s'enfuir

Si vous avez un problème que vous ne comprenez pas même après avoir lu l'explication, échappons-nous. Comme je l'ai écrit plus tôt, est-ce la première chose à s'ennuyer ou la première à obtenir des résultats? Même si vous pouvez comprendre un problème que vous ne pouvez pas comprendre même si vous lisez l'explication, je pense qu'il faudra peut-être un mois ou trois mois avant que vous puissiez le résoudre pendant le concours. Si tel est le cas, il est certainement plus rapide d'obtenir des résultats si vous vous assurez de prendre en compte les problèmes que vous pouvez lire, comprendre et implémenter. Il y a un mot que je chéris en moi, et selon les mots du joueur professionnel Daigo Umehara: "Je ne suis pas fatigué du jeu, je suis fatigué de ne pas grandir." Tout d'abord, accordons la priorité absolue à la capacité de ressentir la croissance par vous-même.

Allons au concours

Pouvez-vous vous concentrer sur une étude de 100 minutes à partir de maintenant? Je pense qu'il y a pas mal de gens qui peuvent répondre OUI lorsqu'on leur demande. Mais qu'en est-il? Quand j'ai participé au concours, je pense que j'étais très nerveux. N'est-ce pas si concentré que c'est impossible? J'étudie cette densité chaque semaine et je ne peux pas m'empêcher d'obtenir un taux plus élevé. De plus, les problèmes que je n'ai pas pu résoudre pendant le concours sont assez regrettables. Il est fortement recommandé car vous pouvez résoudre le problème avec une motivation différente de celle lorsque vous résolvez normalement le problème.

Faisons des gens qui peuvent rivaliser près de nous

Dans mon cas, j'étais senior et professeur, mais ce n'est pas grave si je ne veux pas perdre contre mes amis ou mes juniors. La programmation compétitive avec quelqu'un est très amusante, et chérissez les sentiments regrettables de perdre.

finalement

Cela fait longtemps, mais merci d'avoir lu. Je pense que vous devriez certainement utiliser AtCoder lorsque vous démarrez une nouvelle langue. (Je n'ai pas reçu d'argent d'AtCoder)

Recommended Posts

Jusqu'à ce qu'il devienne bleu clair avec AtCoder
AtCoder Pour devenir bleu clair
Atcoder jusqu'au vert
Une histoire qui est devenue bleu clair en 4 mois après avoir démarré AtCoder avec python
Jusqu'à ce que cela fonctionne avec virtualenv + flask + apache + wsgi
Il est devenu bleu après 9 mois d'histoire d'Atcoder (python)
Résolvez AtCoder 167 avec python
À partir du moment où un étudiant de premier cycle commence AtCoder jusqu'à ce qu'il devienne vert (construction de l'environnement / méthode d'apprentissage)