[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 1/22]

** Streben Sie einen hellblauen Codierer an! !! !! !! !! !! ** **.

Damit [Richtlinien zur Verbesserung von AtCoder, einem von Red Coder gelehrten Wettbewerbsprofi [Zwischenausgabe: Ziel für hellblauen 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 hat 100 gute pädagogische Fragen gesammelt, die für braune und grüne Codierer geeignet sind, um mit einer kleinen Anzahl von Fragen einen hellblauen Codierer oder eine Bewertung von 1200 zu erzielen.

"100 frühere Fragen, die Anfänger und Fortgeschrittene in diesem Artikel lösen sollten" Wird mit ** Python ** gelöst! Vielen Dank an @ e869120! !! !! !! !! !!

Verwandter Artikel Link

** Alle durchsuchen: Alle auflisten ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 1/22] ** Vollständige Suche: Alle Aufzählungen zur Reduzierung der Anzahl der Straßen durch Ausarbeitung ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Part2 / 22] ** Vollständige Suche: Bit vollständige Suche ** [[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil3 / 22]] (https://qiita.com/rudorufu1981/items/74d5f37c26c62fc7a27f) ** Vollständige Suche: Vollständige Suche weiterleiten ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Part4 / 22] ** Halbierungssuche ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Part5 / 22] ** Suche nach Tiefenpriorität ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Part6 / 22] ** Suche nach Breitenpriorität ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Part7 / 22] ** Dynamische Planung: Knapsack DP ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 8/22] ** Dynamische Planungsmethode: Abschnitt DP ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 9/22] ** Dynamische Planungsmethode: Bit DP ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 10/22] ** Dynamische Planung: Andere ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 11/22] ** Problem mit der kürzesten Route: Dixtra-Methode ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 12/22] ** Problem mit der kürzesten Route: Worshall Floyd-Methode ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 13/22] ** Minimales Problem mit dem gesamten Flächenbaum ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 14/22] ** Schnelle Methode zur Beurteilung der Primzahl ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 15/22] ** Schnelle Leistungsberechnung ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 16/22] ** Problem mit Umkehrelement ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 17/22] ** Kumulative Summe ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 18/22] Union-Find [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 19/22] ** Andere Techniken ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 20/22] ** Umsetzungsfragen ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 2 1/22] ** Mathematische Probleme ** [Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 22/22]

** (Hinzugefügt am 2020/05/07) **

Gedenk "Teil 1" -Ordinary vollständige Aufzählung-

Wir werden die folgenden 4 Fragen lösen!

Alle durchsuchen: Alle auflisten

1 ITP1_7_B - Wie viele Möglichkeiten? Dies ist ein grundlegendes Problem. 2 AtCoder Beginner Contest 106 B - 105 3 AtCoder Beginner Contest 122 B - ATCoder 4 Paken Cup 2019 C-Karaoke Wenn Sie dies lösen können, können Sie denken, dass Sie an die vollständige Suche gewöhnt sind.

1 ITP1_7_B - How Many Ways?

↓ Probleme, die in früheren Artikeln als ähnliche Themen aufgegriffen wurden! (Zu diesem Zeitpunkt habe ich es mit einem Triple für Satz gelöst!) [Python] ABC133B (Problem mit dem oberen rechten Dreieck) [At Coder]

Es gibt kein Problem mit dem Triple for Statement, Diesmal habe ich versucht, es zu einem doppelten Satz zu machen!

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 #Die Bedingung von k ist jedoch[1,n]
            if 1<=k<=n and i<j<k:
                ans += 1
    print(ans)

** (Hinzugefügt am 2020/05/01) ** Jetzt schreibe ich den Code so.

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)

Das Verschachteln wird mit itertools.product nicht tiefer! Daher ist es auch mit einem Tripel für Satz leicht zu verstehen.

** (Hinzugefügt am 2020/05/02) ** itertools.combinations Das war schlauer! !! !!

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 Ich war fast tot! Wenn das dritte Argument von "range" (Standard ist 1) zum Beispiel auf "2" gesetzt ist, wird eines übersprungen! range (1, int (i ** 0.5) +1) ist mein Favorit bei der Beurteilung von Primzahlen und der Suche nach Reduzierungen! int () wird nach dem Dezimalpunkt abgeschnitten!

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)

~~ ** (Hinzugefügt am 20.04.2020) ** Übrigens in AtCoder, Da die Version von ABC162 ~ Python3 sofort auf 3.8 gestiegen ist, Zukünftige Wettbewerbe sind mit about → sympy.divisors () w einfach (Nebenbei: Maximale Verpflichtungsnummer → math.gcd () kann jetzt verwendet werden! Ich habe es getan ~) ~~

** (Hinzugefügt am 2020/05/03) ** Ich konnte kein Sympy verwenden! Ich glaube ich habe falsch verstanden ... Es tut mir leid ... Maximales Engagement → math.gcd () Sie können dies verwenden! !! !! Ich werde den Referenzcode vorerst hinterlassen ...

Referenzcode

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 Ich habe zwei Lösungen gefunden! Eine ist die übliche Giermethode. Der andere ist DP.

Lösung 1 (gierige Methode) Finde alle möglichen Antwortkandidaten und überschreibe ans!

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)

Lösung 2 (DP) Mit dem zweiten Argument von "enumerate" (Standard ist 0), Der Index beginnt mit dieser Nummer!

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))

** (Hinzugefügt am 26. Mai 2020) ** Lösung 3 (Alle Teilzeichenfolgen durchsuchen) Verwenden der doppelten Kombination "itertools.combinations_with_replacement", Sie können alle Teilzeichenfolgen durchsuchen! !! !! Beeindruckend! !! !!

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

Nein, es war schwierig! Ein Problem, das die erste Frage Problem mit dem oberen rechten Dreieck mit der dritten Frage kombiniert. Ich habe jedoch das Gefühl, dass ich ab dem nächsten Mal reibungslos Code schreiben kann!

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)


Eine andere Lösung
Dem obigen Code unterlegen. Der Code, der AC am Anfang gewonnen hat. Wenn Sie mit "für x in A" beginnen, erhalten Sie komplizierten Code. .. .. Bereiten Sie ein zweidimensionales Array zum vorübergehenden Speichern vor ... Tauschen Sie die Warteschlangen aus und fügen Sie ... Sein Maximalwert!

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))]))

** (Hinzugefügt am 2020/05/01) ** Wurde ein "Numpy Master (vorläufig)"! Also schreibe ich jetzt den Code so.

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)

Wenn Sie Numpy werden können, ist dieser Code leichter zu lesen. ** Es ist interessant, np.max (). Sum () auf der Rückseite hinzuzufügen! !! !! ** **. Wenn es sich um ein zweidimensionales Array oder mehr handelt, wird der wahre Charakter von Numpy demonstriert! vielleicht!

Nächstes Mal werde ich die folgenden 5 Fragen lösen!

Vollständige Suche: Alle Aufzählungen, um die Anzahl der Straßen zu reduzieren

5 AtCoder Beginner Contest 095 C - Half and Half 6 Sumitomo Mitsui Trust Bank Programmierwettbewerb 2019 D - GlückspIN 7 JOI 2007 Finale 3 - Die ältesten Ruinen sind interessant. Mit Python3 kann die hypothetische Lösung TLE sein. (PyPy3 ist oft pünktlich) 8 Square869120Contest # 6 B - AtCoder-Märkte Es scheint, dass es unzählige Straßen gibt, wenn Sie alle durchsuchen, aber wenn Sie eine entwerfen, ist es ein Problem, dass Sie alle mit realistischen Straßen aufzählen können. 9 JOI 2008 Qualifying 4-Suche nach Sternbildern

Part1/22 Ende!

Weiter (Teil 2/22)

Recommended Posts

[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 5/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 7/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 4/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 3/22].
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 1/22]
[Python] Ich habe versucht, 100 frühere Fragen zu lösen, die Anfänger und Fortgeschrittene lösen sollten [Teil 6/22]
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (028 - 033 Suche nach Breitenpriorität)
Lösen mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (053 --055 Dynamische Planungsmethode: Andere)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (024 --027 Suche nach Tiefenprioritäten)
Lösen Sie mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (015 --017 Vollständige Suche: Vollständige Suche weiterleiten)
Löse mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (010 --014 Vollständige Suche: Bit vollständige Suche)
Lösen Sie mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (001 - 004 Alle suchen: Alle Aufzählungen)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (056 - 059 Problem mit der kürzesten Route: Dyxtra-Methode)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (034-038 Dynamische Planungsmethode: Knapsack DP basic)
Lösen Sie mit Python [100 frühere Fragen, die Anfänger und Fortgeschrittene lösen sollten] (039 - 045 Dynamische Planungsmethode: Knapsack DP-Variante)
Lösen Sie mit Python [100 ausgewählte Fragen aus der Vergangenheit, die Anfänger und Fortgeschrittene lösen sollten] (005 --- 009 Alle Suche: Alle Aufzählungen, um die Anzahl der Straßen durch Entwickeln zu reduzieren)
Ich habe versucht, die Anfängerausgabe des Ameisenbuchs mit Python zu lösen
Python, das ich Anfängern in der Programmierung empfehlen möchte
Ich habe versucht, Soma Cube mit Python zu lösen
Ich habe versucht, das Problem mit Python Vol.1 zu lösen
Ich habe versucht, AOJs Integer-Theorie mit Python zu lösen
Ich habe versucht, die Unterschiede zwischen Java und Python aufzuzählen
Ich habe versucht, die Benutzeroberfläche neben Python und Tkinter dreiäugig zu gestalten
Django super Einführung von Python-Anfängern! Teil 6 Ich habe versucht, die Login-Funktion zu implementieren
Ich habe versucht, die Sprachen, die Anfänger von nun an lernen sollten, absichtlich zusammenzufassen
Tohoku University 2020 Early Mathematical Exam (Science) Ich habe versucht, die großen Fragen 1 bis 3 mit Python zu lösen
Django super Einführung von Python-Anfängern! Teil 1 Ich habe versucht, eine HTML-Seite anzuzeigen, auf der nur "Hallo Welt" steht.
Ich habe versucht, Python zu berühren (Installation)
Python-Anfänger versuchten es herauszufinden
Ich möchte APG4b mit Python lösen (nur 4.01 und 4.04 in Kapitel 4)
[Python] Ein Memo, das ich versucht habe, mit Asyncio zu beginnen
[Pandas] Ich habe versucht, Verkaufsdaten mit Python zu analysieren. [Für Anfänger]
Ich habe versucht, mit Selenium und Python einen regelmäßigen Ausführungsprozess durchzuführen
Ich habe versucht, Gesichtsmarkierungen mit Python und Dlib leicht zu erkennen
[Python] Ich habe versucht, Wörter, die für Anfänger schwer zu verstehen sind, auf leicht verständliche Weise zu erklären.
Ich habe versucht, die Behandlung von Python-Ausnahmen zusammenzufassen
Ich habe versucht, PLSA in Python zu implementieren
Django super Einführung von Python-Anfängern! Teil 3 Ich habe versucht, die Vererbungsfunktion für Vorlagendateien zu verwenden
Wie man offline in Echtzeit schreibt Ich habe versucht, E11 mit Python zu lösen
Ich habe versucht, PLSA in Python 2 zu implementieren
Python3-Standardeingabe habe ich versucht zusammenzufassen
Ich wollte ABC160 mit Python lösen
Ich habe versucht, PyEZ und JSNAPy zu verwenden. Teil 2: Ich habe versucht, PyEZ zu verwenden
Ich habe versucht, ADALINE in Python zu implementieren
Ich habe versucht, Optuna die Nummer lösen zu lassen
Ich habe versucht, einen Formatierer zu entwickeln, der Python-Protokolle in JSON ausgibt
Django super Einführung von Python-Anfängern! Teil 2 Ich habe versucht, die praktischen Funktionen der Vorlage zu nutzen
Ich habe versucht, Kanas handschriftliche Zeichenerkennung durchzuführen. Teil 2/3 Datenerstellung und Lernen
Ich wollte ABC159 mit Python lösen
Ich habe versucht, PPO in Python zu implementieren
10 Python-Fehler, die Anfängern häufig sind
Ich habe versucht, die Beschleunigung von Python durch Cython zu verifizieren und zu analysieren
Ich habe versucht, AtCoders Depth Priority Search (DFS) in Python zu lösen (Ergebnis: TLE ...)
Ich habe versucht, TSP mit QAOA zu lösen
[Python] Ich habe versucht, TF-IDF stetig zu berechnen
[Markov-Kette] Ich habe versucht, Zitate und negative Emotionen in Python einzulesen.
Ich habe versucht, Python zu berühren (grundlegende Syntax)
Ich habe ein Beispiel für den Zugriff auf Salesforce mit Python und Bottle erstellt
Ich wollte ABC172 mit Python lösen
Ich überarbeitete "Ich habe versucht, Othello AI zu machen, als Programmieranfänger Python studierten"