C'est un article selon le titre. J'ai lancé AtCoder en septembre et il est devenu bleu clair à AGC41 l'autre jour. J'ai pensé résumer ce que j'ai fait jusqu'à présent dans ce domaine, je vais donc l'écrire sous forme d'article. Je ne sais pas si cela sera utile à tout le monde.
――Vous avez passé l'examen du premier cycle du secondaire et êtes diplômé de l'ancienne école supérieure de l'Université impériale (majeure de chimie). Par conséquent, j'ai une formation en mathématiques pour m'y inscrire. Je me suis beaucoup amusé à l'université, donc je ne me souviens pas des mathématiques à l'université. --Bien que l'entreprise soit liée à l'informatique, il n'y a presque pas de programmation car elle est plus proche de l'infrastructure. --Java a été touchée il y a environ un an pendant environ deux mois. J'ai touché au C ++ il y a peu de temps. Je ne suis donc pas un profane de la programmation.
Vous pouvez résoudre le problème B d'ABC sans trop d'hésitation, mais partez d'un état où vous n'avez presque aucune connaissance de la programmation et des algorithmes concurrentiels. AtCoder a commencé comme un passe-temps plutôt.
** Résolvez les problèmes avec juste le bon niveau de difficulté avec Atcoder Problems. **seulement ça. ↓ Il s'agit de l'état actuel du remplissage ABC. Eh bien, je pose 330 questions en 4 mois, donc je pense que c'est une personne qui l'a emballé dans un court laps de temps, mais si vous pensez que 330 questions sont bleu clair, n'est-ce pas approprié? Impression ça. Récemment, j'ai un peu rempli le concours, donc il y a moins de problèmes que j'ai réellement appris.
Au fait, ** je n'ai pas encore utilisé mathpy ou scipy. ** ** Vous pouvez le faire sans l'utiliser du tout. Je prévois de l'utiliser à l'avenir.
――Remplir une difficulté trop faible peut être bon pour maintenir la motivation, mais je pense que cela ne sert à rien (pas à rien) pour s'améliorer. Une personne qui peut résoudre le problème A en 4 minutes ne peut gagner que 2 minutes même si elle double la vitesse, mais si le problème D prend 40 minutes, elle peut gagner 4 minutes simplement en l'accélérant de 10%, donc c'est un problème difficile. Je pense qu'il est plus facile de s'améliorer si vous travaillez dessus. De plus, par expérience, même si vous résolvez 10 questions de 300 points, vous ne pourrez pas résoudre 400 points. Si vous pouvez résoudre 400 points, vous devez défier 10 questions à 400 points. ―― ** C'est une vérité qui a été vérifiée dans tous les domaines qu'il est préférable pour la croissance de continuer à relever des défis qui représentent environ 1,1 fois vos propres capacités. ** Chez Coder, la conclusion jusqu'à présent est qu'il est préférable de s'attaquer au "problème de savoir si vous pouvez le résoudre en une heure environ".
―― Pensez au problème jusqu'à ce que vous le compreniez complètement. Même si vous regardez le commentaire et pensez: «Oh, c'est vrai», ne vous arrêtez pas là. Je le ferai jusqu'à ce que je le mette en œuvre de mes propres mains. C'était la même chose que d'étudier pour l'examen, mais ** Le plus dangereux est que je peux le résoudre en accumulant autant de questions que possible et en bougeant la main en arrêtant de penser. ** Je le ferai avec l'intention de faire de chaque question mon propre sang. Cependant, il y a certaines choses que je pense encore "je suis encore en avance" quand je regarde le commentaire, donc je n'en fais pas trop.
C'est une prémisse majeure, et en plus de cela, je vais énumérer les avantages que j'ai réellement ressentis en utilisant python.
Il est facile de comprendre ce que vous faites en un coup d'œil ... C'est plus un avantage lorsque vous regardez le code de quelqu'un d'autre qu'un avantage de l'utiliser vous-même. Pour être honnête, je pense que peu importe si je l'écris un peu de façon confuse ou avec beaucoup de parenthèses. Les principales langues modernes peuvent ne pas être aussi bonnes ou de nature inférieure (parce qu'elles sont autrement éliminées). D'un autre côté, lorsque je lis le code de quelqu'un d'autre, je trouve souvent que python est avantageux car il est court et soigné. Eh bien, c'est aussi subjectif.
Il y a beaucoup de gens qui se sont demandés: "Est-ce là?" Recherche dichotomisée, file d'attente prioritaire ou énumération séquentielle. Et si vous google, cela sort essentiellement. Il existe différentes méthodes de routage les plus courtes (bien qu'il soit préférable d'en avoir une que vous avez vous-même implémentée afin de pouvoir apporter diverses modifications mineures).
Bien sûr, vous ne pouvez pas utiliser quelque chose que vous ne connaissez pas. Vous n'avez aucune chance de le savoir tant que vous ne rencontrez pas le problème de l'utilisation de cette méthode. Eh bien, tout ce que vous avez à faire est d'étudier.
Je pense que c'est commun à toutes les langues dans une certaine mesure, mais la vitesse change complètement en fonction de la méthode utilisée même avec le même contenu d'implémentation. Surtout autour de l'opération de texte, la différence est plus grande. Cependant, je pense que la grande différence est le revers de la médaille de l'abondance des méthodes. On peut dire que c'est un grand mérite que vous n'ayez pas à mettre en œuvre des méthodes détaillées par vous-même.
En gros, vous pouvez utiliser pypy, mais python n'est plus rapide que pour les fonctions récursives. Si vous êtes pressé pendant le concours, vous pouvez oublier votre choix et TLE (une défaite).
Cependant, je n'ai jamais eu de vie professionnelle de compétition python jusqu'à présent que "TLE reste, mais il n'y a plus de place pour le grattage". [Ici](https://maspypy.com/atcoder-%E6%A9%992400%E3%81%AB%E3%81%AA%E3%82%8A%E3%81%BE%E3%81%97 Il est également écrit en% E3% 81% 9F), mais je pense que ce ne sera pas un problème à moins que ce ne soit à un niveau qui vire au jaune ou à l'orange. Je pense que python devrait être arrêté si vous êtes convaincu que vous pouvez virer au jaune en si peu de temps que vous n'avez pas le temps de changer de langue, mais combien de ces personnes sont-elles là dans le monde ... Aussi, j'ai personnellement un petit doute sur l'opinion selon laquelle "l'amélioration par un facteur constant n'est pas indispensable", et tant que je suis en concurrence avec le code que j'ai réellement écrit, j'ai imaginé une manière d'écrire afin qu'elle s'insère dans le délai en supprimant les caractéristiques du langage. N'est-ce pas naturel de le faire? Je pense. Même si la logique est correcte, je pense qu'elle devrait être incorrecte si la vitesse d'exécution est lente.
Depuis que j'ai résolu beaucoup de problèmes en étudiant pour des examens pendant une longue période, le système de récompense pour résoudre les problèmes est terminé. En attendant le juge, le jus de cerveau lorsque l'écran AC apparaît est toujours une grande motivation pour continuer AtCoder.
Surtout dans le temps limité du concours, il est facile de copier et coller presque le même processus encore et encore, et d'augmenter le nombre de cas plus que nécessaire. Je ne pense pas que la compétence d'écrire du code propre puisse être appliquée à moins que vous n'en soyez conscient.
Bien sûr, cela peut être utile selon le type d'entreprise, mais dans mon entreprise, le lien avec la DB / front et le framework sont plus importants, donc je ne pense pas que cela soit très utile en pratique. Eh bien, je pense que c'est le cas. Je sens que je le fais juste comme passe-temps
Il y a tellement de choses que je n'ai pas encore étudiées, alors je veux continuer à augmenter ce que je peux faire et aller aussi loin que je peux. N'est-ce pas en quelque sorte bleu? Je sens ça.
c'est tout. Si vous avez une idée, je vais l'ajouter.
Recommended Posts