[PYTHON] Atcoder jusqu'au vert

Auto-introduction

Bonjour, c'est HIROSHI0635. J'en suis à ma deuxième année dans les affaires financières (je ne programme pas du tout au travail Orz ...). Quand j'étais à l'université, j'étais étudiant en arts libéraux, et je n'avais jamais touché au «pu» du programme, mais j'ai réussi à devenir vert 10 mois après avoir commencé à concourir, j'ai donc voulu essayer l'article «~ couleur». J'ai écrit. C'est un article explicite, mais si vous êtes nouveau sur Atcoder, vous le trouverez peut-être un peu utile. スクリーンショット 2020-02-23 15.22.15.png

1. Jusqu'à ce que vous démarriez Atcoder

La motivation pour commencer était quand je me demandais si je devais vraiment arrêter à cause des relations humaines étroites au travail, alors j'ai pensé que ce serait bien d'avoir un travail où je pourrais rivaliser avec mes compétences techniques, alors j'ai décidé de programmer avec l'idée que je peux toujours le faire. Je suis arrivé. Cependant, je ne connaissais pas le «p» de la programmation, et je n'avais rien de ce que je voulais faire, alors quand je me demandais quoi faire, mon senior à l'université a recommandé Atcoder. J'étais assez bon pour étudier pour les examens (bien que les mathématiques du centre soient à un niveau d'environ 80 points pour IA et IIB), j'ai donc pensé que résoudre des problèmes et augmenter ou réduire le taux était une méthode d'étude qui me convenait. ..

2. Frustration

Je ne savais rien de la première langue, j'ai donc choisi le C ++ le plus important d'Atcoder comme recommandé. Cependant, la grammaire était compliquée, et il y avait beaucoup de règles telles que la soi-disant «magie», donc je ne pouvais pas atteindre le point où je pouvais résoudre le problème. De plus, j'ai été transféré dans un autre département et mes relations se sont améliorées, et j'étais moins motivée qu'avant. Depuis, je ne fais rien depuis environ six mois.

3. Jusqu'à la résurrection

Quand j'ai rencontré un ingénieur client au travail et que j'étais frustré par la programmation compétitive en C ++, il a dit: «Alors, pourquoi ne pas essayer à nouveau en Python? Il y a peu de magie et je pense que c'est facile à faire. Je n'avais pas assez d'énergie pour faire du vélo comme passe-temps chaque semaine, donc j'étais libre, alors j'ai recommencé. Cette fois, j'ai suivi un cours Python à Paiza pour ne pas être frustré par la grammaire, puis j'ai commencé à résoudre le problème. Cependant, si vous écrivez un programme énorme, vous devrez peut-être faire des classes et des instances, mais avec Atcoder, il suffit de faire des fonctions, donc je pense qu'il vaut mieux résoudre le problème. Si vous êtes frustré par C ++, pensez que vous avez été dupé et réessayez avec Python.

4. Jusqu'au brun

スクリーンショット 2020-02-23 18.19.40.png

La création de l'environnement a semblé pénible et il était insensé d'être frustré, alors j'ai écrit le code dans l'environnement en ligne de paiza jusqu'à ce qu'il devienne vert https://paiza.io/ja Jusqu'à ce qu'il devienne brun, je viens de remplir le problème B. Cela a pris beaucoup de temps au début, mais une fois que je m'y suis habitué, la solution m'a semblé arriver en un rien de temps, puis je l'ai juste mise en œuvre. J'ai répondu à environ 50 questions en un mois et je les ai simplement rédigées. Ensuite, j'ai entendu une rumeur selon laquelle "Arimoto est bon", et je l'ai acheté maintenant, donc version AtCoder! Arimoto (Débutant) a commencé à être rempli. Je pouvais comprendre toute la recherche et la cupidité, mais j'étais complètement obstrué par DFS et BFS et j'ai abandonné une fois et j'ai commencé à remplir le problème C, et ce faisant, il est devenu brun.

5. Jusqu'au vert

スクリーンショット 2020-02-23 19.33.42.png

Je pensais que ce serait facile de passer du brun au vert, mais j'ai eu du mal de façon inattendue (en fait, dans le concours final pour devenir brun, j'ai pensé que c'était une question de temps, avec une performance de plus de 1000). Parce qu'à partir de 2019/10 environ, le niveau de l'environnement a clairement augmenté et les performances ont chuté d'environ 150 par rapport à avant. De plus, parfois je prenais du temps pour un problème simple et donnais parfois une performance d'environ 400, ce qui faisait caler le rythme. Donc, j'ai pensé à la «puissance d'attaque» pour résoudre des problèmes difficiles, à la «puissance défensive» pour résoudre rapidement des problèmes simples, et il est difficile d'augmenter la puissance d'attaque, alors augmentez d'abord la puissance défensive. J'ai essayé. De plus, en tant que tendance de problème récente, le problème C est devenu plus facile, et la difficulté marron (problème de difficulté 400-800 dans Atcoder Problem) est ignorée, et le problème de difficulté vert / bleu clair apparaît souvent soudainement. (De ABC140 à ABC156, la difficulté marron a 5 questions, la difficulté verte a 11 questions et la difficulté bleu clair a 13 questions). Il existe de nombreux ensembles qui n'ont pas de problèmes de brun, et si vous n'êtes pas à un niveau où vous pouvez résoudre les problèmes de vert, accélérer les problèmes de gris est le moyen le plus rapide de passer au vert. La seule façon d'améliorer votre force défensive est de vous consacrer beaucoup, mais voici quelques choses que j'ai essayées ailleurs.

Présentation d'un environnement local

Je suis redevable à l'environnement en ligne de Paiza depuis longtemps, mais je n'ai jamais décidé de créer un environnement local. Dans le même temps, le test unitaire Atcoder https://qiita.com/YujiSoftware/items/00ce688ce5dde627ec36 a été introduit, et le contrôle de fonctionnement des problèmes A et B a été considérablement amélioré. Après tout, l'environnement local a des avantages tels que la saisie prédictive, les modèles et la recherche de bogues, donc je pense qu'il est préférable de passer à l'environnement local le plus tôt possible (je ne l'ai pas encore maîtrisé du tout). Au fait, j'utilise Pycharm.

Voir l'échantillon 1 rapidement sans charger le problème

Jusqu'au problème C, même si vous ne comprenez pas la phrase du problème, il est souvent plus rapide de scanner la phrase du problème et de regarder l'exemple pour obtenir une vue d'ensemble du problème. Après D, si vous ne lisez pas attentivement les restrictions, vous serez souvent surpris, vous devriez donc le lire attentivement.

Utilisation du concours virtuel

À mesure que les intervalles entre les compétitions augmentent, la vitesse et la motivation diminuent, j'ai donc régulièrement organisé des concours virtuels avec mes collègues pour améliorer la vitesse et maintenir la motivation.

Même si j'échouais, j'ai réussi à continuer à participer au concours et j'ai pu passer au vert.

6. Autres conseils utiles pour les guerriers Python

Collection.Counter, méthode most_common ()

Cette bibliothèque est vraiment polyvalente. Comment utiliser cet article. https://note.nkmk.me/python-collections-counter/ Environ une fois toutes les cinq fois, si vous le savez, vous aurez un problème que vous pourrez tuer instantanément.

La magie qui rend l'entrée un peu plus rapide

import sys  input = sys.stdin.readline

Le simple fait d'ajouter ces deux lignes au tout début augmentera la vitesse d'environ 10%. Je ne sais pas pourquoi. Cet article est facile à comprendre sur les petites améliorations de vitesse. https://www.kumilog.net/entry/python-speed-comp

7. À la fin

Cette fois, la tendance principale était de commencer à faire des pros de la demi-compétition, mais une fois que j'arriverai au bleu clair, j'aimerais écrire un article cohérent qui m'aidera à résoudre un peu plus le problème.

Recommended Posts

Atcoder jusqu'au vert
[Python] Maintenant un codeur vert ~ [AtCoder]
atCoder 173 Python
AtCoder ABC176
Défiez AtCoder
Jusqu'à ce qu'il devienne bleu clair avec AtCoder
AtCoder 174 BCD
AtCoder ABC177
[Fenwick_Tree] Lecture de la bibliothèque AtCoder avec un codeur vert ~ Implémentation en Python ~