[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 1/22]

** Visez un codeur bleu clair! !! !! !! !! !! ** **

Alors [Directives pour améliorer AtCoder, un pro de la compétition enseigné par Red Coder [Édition intermédiaire: Visez Light Blue Coder! ]]( https://qiita.com/e869120/items/eb50fdaece12be418faa#2-3-%E5%88%86%E9%87%8E%E5%88%A5%E5%88%9D%E4%B8%AD%E7 % B4% 9A% E8% 80% 85% E3% 81% 8C% E8% A7% A3% E3% 81% 8F% E3% 81% B9% E3% 81% 8D% E9% 81% 8E% E5% 8E % BB% E5% 95% 8F% E7% B2% BE% E9% 81% B8-100-% E5% 95% 8F) (@ e869120)

AtCoder a rassemblé 100 bonnes questions éducatives qui conviennent aux codeurs marron et vert afin d'obtenir un codeur bleu clair, ou une note de 1200, avec un petit nombre de questions.

100 questions passées que les débutants et les intermédiaires devraient résoudre dans cet article` Sera résolu avec ** Python **! Merci à @ e869120! !! !! !! !! !!

Lien d'article connexe

** Rechercher tout: Tout lister ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part1 / 22] ** Recherche complète: toute énumération pour réduire le nombre de rues en concevant ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part2 / 22] ** Recherche complète: recherche complète de bits ** [[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part3 / 22]] (https://qiita.com/rudorufu1981/items/74d5f37c26c62fc7a27f) ** Recherche complète: avant la recherche complète ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part4 / 22] ** Recherche par section ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part5 / 22] ** Recherche de priorité de profondeur ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part6 / 22] ** Recherche de priorité de largeur ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part7 / 22] ** Planification dynamique: Knapsack DP ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 8/22] ** Méthode de planification dynamique: Section DP ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 9/22] ** Méthode de planification dynamique: bit DP ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 10/22] ** Planification dynamique: Autre ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 11/22] ** Problème d'itinéraire le plus court: méthode Dixtra ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 12/22] ** Problème d'itinéraire le plus court: méthode Worshall Floyd ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 13/22] ** Problème d'arbre minimum sur toute la surface ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 14/22] ** Méthode de jugement rapide des nombres premiers ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 15/22] ** Calcul de puissance rapide ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 16/22] ** Problème lors de l'utilisation de l'élément inversé ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 17/22] ** Somme cumulée ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 18/22] Union-Find [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 19/22] ** Autres techniques ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 20/22] ** Problèmes de mise en œuvre ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part2 1/22] ** Problèmes mathématiques ** [Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 22/22]

** (Ajouté le 07/05/2020) **

Commémorative "Partie 1" -Dénombrement complet ordinaire-

Nous allons résoudre les 4 questions suivantes!

Rechercher tout: énumérer tout

1 ITP1_7_B - De combien de façons? C'est un problème de base. 2 AtCoder Beginner Contest 106 B - 105 3 AtCoder Beginner Contest 122 B - ATCoder 4 Paken Cup 2019 C-Karaoke Si vous pouvez résoudre ce problème, vous pouvez penser que vous êtes habitué à la recherche complète.

1 ITP1_7_B - How Many Ways?

↓ Des problèmes qui ont été abordés comme des sujets similaires dans des articles précédents! (À ce moment-là, je l'ai résolu avec un triple pour la phrase!) [Python] ABC133B (problème de triangle supérieur droit) [At Coder]

Il n'y a aucun problème avec la déclaration triple for, Cette fois, j'ai essayé d'en faire un double pour la phrase!

test.py


def LI(): return list(map(int,input().split()))
while 1:
    n,x = LI()
    if n==x==0:
        break
    ans = 0
    for i in range(1,n+1):
        for j in range(1,n+1):
            k = x-i-j #Cependant, la condition de k est[1,n]
            if 1<=k<=n and i<j<k:
                ans += 1
    print(ans)

** (Ajouté le 01/05/2020) ** Maintenant, j'écris le code comme ça.

test.py


import itertools
def LI(): return list(map(int,input().split()))
while 1:
    n,x = LI()
    if n==x==0:
        break
    ans = 0
    for i,j,k in itertools.product(range(1,n+1),repeat=3):
        if i<j<k and i+j+k==x:
            ans += 1
    print(ans)

ʻItertools.product` n'approfondit pas le nid! Par conséquent, il est facile à comprendre même avec un triple pour la phrase.

** (Ajouté le 02/05/2020) ** ʻItertools.combinations` C'était plus intelligent! !! !!

test.py


import itertools
def LI(): return list(map(int,input().split()))
while 1:
    n,x = LI()
    if n==x==0:
        break
    ans = 0
    for i,j,k in itertools.combinations(range(1,n+1),3):
        if i+j+k==x:
            ans += 1
    print(ans)

2 AtCoder Beginner Contest 106 B - 105 Difficulty:66 J'étais presque mort! Si le troisième argument de range (la valeur par défaut est 1) est défini sur" 2 ", par exemple, un sera ignoré! range (1, int (i ** 0.5) +1) est mon préféré pour juger des nombres premiers et rechercher des réductions! ʻInt () ʻest tronqué après le point décimal!

test.py


def I(): return int(input())
N = I()
ans = 0
if N>=105:
    for i in range(105,N+1,2):
        count_yakusuu = 0
        for j in range(1,int(i**0.5)+1):
            if i%j==0:
                count_yakusuu += 2
        if count_yakusuu==8:
            ans += 1
print(ans)

~~ ** (Ajouté le 20/04/2020) ** Au fait, dans AtCoder, Puisque la version de ABC162 ~ Python3 est passée à 3.8 à la fois, Les futurs concours sont faciles avec about → sympy.divisors () w (A part: engagements maximum → math.gcd () peut maintenant être utilisé! Je l'ai fait ~) ~~

** (Ajouté le 03/05/2020) ** Je ne pouvais pas utiliser «sympy»! Je pense que j'ai mal compris ... je suis désolé ... Engagement maximum → math.gcd () Vous pouvez l'utiliser! !! !! Je vais laisser le code de référence pour le moment ...

Code de référence

test.py


import sympy
def I(): return int(input())
N = I()
ans = 0
if N>=105:
    for i in range(105,N+1,2):
        if len(sympy.divisors(i))==8:
            ans += 1
print(ans)

3 AtCoder Beginner Contest 122 B - ATCoder Difficulty:85 J'ai proposé deux solutions! L'une est la méthode habituelle de cupidité. L'autre est DP.

Solution 1 (méthode gourmande) Remplacez «an» à la recherche de toutes les réponses possibles!

test.py


S = input()
ans,temp = 0,0
for x in S:
    if x in 'ACGT':
        temp += 1
    else:
        temp = 0
    ans = max(ans,temp)
print(ans)

Solution 2 (DP) Avec le deuxième argument de ʻenumerate` (la valeur par défaut est 0), L'index commence à partir de ce nombre!

test.py


S = input()
dp = [0]*(len(S)+1) #1_indexed
for i,x in enumerate(S,1):
    if x in 'ACGT':
        dp[i] = dp[i-1]+1
print(max(dp))

** (Ajouté le 26 mai 2020) ** Solution 3 (Rechercher toutes les sous-chaînes) En utilisant la combinaison dupliquée ʻitertools.combinations_with_replacement`, Vous pouvez rechercher toutes les sous-chaînes! !! !! Hou la la! !! !!

test.py


import itertools
S = input()
ans = 0
for i,j in itertools.combinations_with_replacement(range(len(S)),2):
    if all([x in 'ACGT' for x in S[i:j+1]]):
        ans = max(ans,j+1-i)
print(ans)

4 Paken Cup 2019 C-Karaoke

Non, c'était difficile! Un problème qui combine la première question problème du triangle supérieur droit avec la troisième question. Cependant, je sens que je peux écrire du code en douceur dès la prochaine fois!

test.py


def LI(): return list(map(int,input().split()))
N,M = LI()
A = [LI() for _ in range(N)]
ans = 0
for i in range(M):
    for j in range(i+1,M):
        temp = 0
        for k in range(N):
            temp += max(A[k][i],A[k][j])
        ans = max(ans,temp)
print(ans)


Une autre solution
Inférieur au code ci-dessus. Le code qui a gagné AC au tout début. Si vous commencez par for x in A, vous vous retrouvez avec un code compliqué. .. .. Préparez un tableau à deux dimensions pour une sauvegarde temporaire ... Échangez les files d'attente et ajoutez ... Sa valeur maximale!

test.py


def LI(): return list(map(int,input().split()))
N,M = LI()
A = [LI() for _ in range(N)]
temp = [[0]*(M*(M-1)//2) for _ in range(N)]
for i,x in enumerate(A):
    l = 0
    for j in range(M):
        for k in range(j+1,M):
            l += 1
            temp[i][l-1] = max(x[j],x[k])
print(max([sum(x) for x in (zip(*temp))]))

** (Ajouté le 01/05/2020) ** Devenu un "Numpy Master (provisoire)"! Alors maintenant, j'écris le code comme ça.

test.py


import itertools,numpy as np
def LI(): return list(map(int,input().split()))
N,M = LI()
a = np.array([LI() for _ in range(N)])
ans = 0
for i,j in itertools.product(range(M),repeat=2):
    if i<j:
        ans = max(ans,a[:,[i,j]].max(axis=1).sum())
print(ans)

Si vous pouvez devenir Numpy, ce code sera plus facile à lire. ** Il est intéressant d'ajouter np.max (). Sum () à l'arrière! !! !! ** ** La véritable essence de Numpy est démontrée lorsqu'il devient un tableau à deux dimensions ou plus! peut être!

La prochaine fois, je résoudrai les 5 questions suivantes!

Recherche complète: tous les dénombrements pour réduire le nombre de rues en concevant

5 AtCoder Beginner Contest 095 C - Half and Half 6 Concours de programmation Sumitomo Mitsui Trust Bank 2019 D - PIN porte-bonheur 7 JOI 2007 Final 3 - Les ruines les plus anciennes sont intéressantes. Avec Python3, la solution hypothétique peut être TLE. (PyPy3 est souvent dans le temps) 8 Square869120Concours # 6 B --AtCoder Markets Il semble qu'il y ait d'innombrables rues lorsque vous recherchez toutes, mais si vous en imaginez une, c'est un problème que vous pouvez énumérer toutes avec des rues réalistes. 9 JOI 2008 Qualifying 4-Search for constellations

Part1/22 fin!

Suivant (Partie 2/22)

Recommended Posts

[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 5/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 7/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 4/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Part3 / 22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 1/22]
[Python] J'ai essayé de résoudre 100 questions passées que les débutants et les intermédiaires devraient résoudre [Partie 6/22]
Résoudre avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (028 --033 recherche de priorité de largeur)
Résolution avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (053 --055 Méthode de planification dynamique: Autres)
Résoudre avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (024 --027 Recherche de priorité en profondeur)
Résoudre avec Python [100 anciennes questions sélectionnées que les débutants et les intermédiaires devraient résoudre] (015 --017 Recherche complète: Recherche complète en avant)
Résoudre avec Python [100 questions passées sélectionnées que les débutants et les intermédiaires devraient résoudre] (010 --014 Recherche complète: Recherche complète de bits)
Résoudre avec Python [100 questions passées sélectionnées que les débutants et les intermédiaires devraient résoudre] (001 --004 Toutes les recherches: Toutes les énumérations)
Résoudre avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (056 --059 Problème de l'itinéraire le plus court: méthode Dyxtra)
Résoudre avec Python [100 questions que les débutants et les intermédiaires devraient résoudre] (034-038 Méthode de planification dynamique: Knapsack DP basic)
Résolvez avec Python [100 questions passées que les débutants et les intermédiaires devraient résoudre] (039 --045 Méthode de planification dynamique: variante Knapsack DP)
Résoudre avec Python [100 questions passées sélectionnées que les débutants et les intermédiaires devraient résoudre] (005 --- 009 Toutes les recherches: Toutes les énumérations pour réduire le nombre de rues en concevant)
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
Python que je voudrais recommander aux débutants en programmation
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé de résoudre la théorie des nombres entiers d'AOJ avec Python
J'ai essayé d'énumérer les différences entre java et python
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
Django super introduction par les débutants Python! Partie 6 J'ai essayé d'implémenter la fonction de connexion
J'ai essayé de résumer les langues que les débutants devraient désormais apprendre par but
Examen mathématique précoce de l'Université Tohoku 2020 (sciences) J'ai essayé de résoudre les grandes questions 1 à 3 avec Python
Django super introduction par les débutants Python! Partie 1 J'ai essayé d'afficher une page HTML qui ne dit que "Hello World"
J'ai essayé de toucher Python (installation)
les débutants en python ont essayé de le découvrir
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
[Pandas] J'ai essayé d'analyser les données de ventes avec Python [Pour les débutants]
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de détecter facilement les points de repère du visage avec python et dlib
[Python] J'ai essayé d'expliquer des mots difficiles à comprendre pour les débutants d'une manière facile à comprendre.
J'ai essayé de résumer la gestion des exceptions Python
J'ai essayé d'implémenter PLSA en Python
Django super introduction par les débutants Python! Partie 3 J'ai essayé d'utiliser la fonction d'héritage de fichier de modèle
Comment écrire hors ligne en temps réel J'ai essayé de résoudre E11 avec python
J'ai essayé d'implémenter PLSA dans Python 2
Entrée standard Python3 que j'ai essayé de résumer
Je voulais résoudre ABC160 avec Python
J'ai essayé d'utiliser PyEZ et JSNAPy. Partie 2: J'ai essayé d'utiliser PyEZ
J'ai essayé d'implémenter ADALINE en Python
J'ai essayé de laisser optuna résoudre le nombre
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
Django super introduction par les débutants Python! Partie 2 J'ai essayé d'utiliser les fonctions pratiques du modèle
J'ai essayé de faire la reconnaissance de caractères manuscrits de Kana Partie 2/3 Création et apprentissage de données
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
10 erreurs Python communes aux débutants
J'ai essayé de vérifier et d'analyser l'accélération de Python par Cython
J'ai essayé de résoudre la recherche de priorité de profondeur (DFS) d'AtCoder en Python (résultat: TLE ...)
J'ai essayé de résoudre TSP avec QAOA
[Python] J'ai essayé de calculer TF-IDF régulièrement
[Chaîne de Markov] J'ai essayé de lire des citations et des émotions négatives en Python.
J'ai essayé de toucher Python (syntaxe de base)
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
Je voulais résoudre ABC172 avec Python
J'ai refactoré "J'ai essayé de faire d'Othello AI lorsque les débutants en programmation ont étudié python"