La personne qui a récemment obtenu un rang vert dans AtCoder.
Cette fois, j'ai résumé ce que j'ai fait personnellement et ce à quoi je fais attention.
Je pense que ce qui suit est nécessaire pour atteindre le rang vert.
En fin de compte, je pense qu'il est possible de passer au rang vert même si vous ne pouvez pas résoudre le problème D (même si cela peut prendre un certain temps).
Pour référence, le tableau ci-dessous résume les résultats des concours auxquels j'ai récemment participé virtuellement.
Nom du concours | résultat | Évaluation * |
---|---|---|
ABC127 | 3 complet | 921 |
ABC128 | 3 complet | 1148 |
ABC129 | 3 complet | 1005 |
ABC130 | 4 complet | 1309 |
ABC131 | 3 complet | 524 |
ABC132 | 4 complet | 1257 |
ABC133 | 4 complet | 1115 |
ABC134 | 4 complet | 1113 |
ABC135 | 3 complet | 1175 |
ABC136 | 4 complet | 1131 |
ABC137 | 4 complet | 1451 |
ABC138 | 4 complet | 1007 |
En regardant le tableau ci-dessus, il y a ** 3 fois lorsque le taux est de 1148 ou 1175.
ABC131 est un exemple où le problème D était facile, mais il s'est arrêté à 3 arrivées. .. ..
Par conséquent, je pense personnellement comme suit.
Résolvez le problème C en 15 minutes à chaque fois, et résolvez le problème D une fois toutes les trois fois! </ font>
Si cela prend plus de 15 minutes pour résoudre le problème C, je vais certainement résoudre le problème D! Ça me fait sentir.
Ce qui suit est un résumé de ce à quoi vous devez faire attention lorsque vous résolvez les problèmes A à D.
La plupart des problèmes A et B peuvent être résolus si vous connaissez la grammaire de base.
Je ne pense pas qu'il y ait eu de problème particulier de s'inquiéter de la quantité de calcul, alors résolvons-le simplement en utilisant une instruction for ou if.
Aussi, soyons en mesure d'effectuer un traitement de base de la liste.
test.py
l =[]
l.append(1) #Ajouter à la liste
a = l.pop() #Extraire la fin de la liste
l = [i for i in range(N)] #Notation d'inclusion
max_l = max(l) #Obtenez la valeur maximale dans la liste
min_l = min(l) #Obtenez la valeur minimale dans la liste
Et dans le problème B, il y a parfois un problème tel que "un traitement normal est effectué lorsque N> 1, mais un traitement d'exception est effectué lorsque N = 0" (ou plutôt, un tel bogue s'est produit dans le programme que j'ai écrit. Il y a des moments où
test.py
import sys
if N == 0:
#Traitement spécial
sys.exit()
for i in range(N):
#Traitement normal
J'écris parfois quelque chose comme ça.
C a des problèmes difficiles, et la quantité de calcul doit être prise en considération.
Dans ce problème, la taille d'entrée est 2 * 10 ^ 9. C'est la taille que même une seule boucle devient TLE, donc je dois penser qu'une simple instruction for ne peut pas être utilisée.
Cependant, si vous y pensez positivement, c'est un indice car il existe un moyen de réduire sûrement la quantité de calcul.
Dans ce problème, au contraire, les données d'entrée sont une chaîne de caractères de 10 caractères ou moins. Pour les problèmes avec des données d'entrée extrêmement petites, la ** recherche complète ** est souvent utilisée.
--Si N <= 10, vous pouvez utiliser la recherche complète de bits et la recherche complète de n! Rue. --Si 100 <N <200, vous pouvez utiliser jusqu'à triple boucle
Je peux m'attendre à quelque chose comme ça. C'est juste une attente.
Le problème C importe diverses bibliothèques et modules Python.
Préparez également à l'avance les fonctions fréquemment utilisées.
Je vais résumer les bibliothèques, modules et fonctions que j'utilise personnellement pour les problèmes C.
--itertools (combinaison, séquence, recherche complète de N! Streets) --math (multiple commun minimum, promesse maximum, etc.) --Enumération des fractions (la version obtenue par O (√N)) --bit full search (valable uniquement lorsque N est petit) --deque (liste qui peut être ajoutée et pop à partir des bords gauche et droit) --heapq (file d'attente prioritaire) --collections (celui qui compte la fréquence d'apparition) --bisect (dichotomie)
Veuillez commenter s'il y en a d'autres!
Pour le dire autrement, la plupart des problèmes peuvent être résolus sans utiliser d'algorithmes difficiles tels que ** méthode de planification dynamique, méthode dixtra, DFS et BFS. ** **
Le problème D n'est pas stable car je ne peux le résoudre qu'environ 7 fois si j'ai 10 concours, et parfois je peux le résoudre en 30 minutes et parfois ce n'est que 100 minutes.
Personnellement, je me demandais si ce serait stable si je pouvais résoudre les problèmes listés dans @ drken's cet article sans lutter. Je vais.
Par conséquent, le modèle d'algorithme écrit ici est codé à l'avance, et il semble intéressant d'ajouter ou de modifier le programme en fonction du problème.
Si c'est un codeur vert, vous n'avez pas à le résoudre. Je dois étudier parce que je dois être capable de résoudre le problème E pour devenir bleu clair.
Il existe de nombreuses opinions personnelles, mais j'espère que cela vous sera utile.
Recommended Posts