Dies ist ein Übersichtsartikel für Anfänger von Wettkampfprofis.
Die Lösung, die ich hier schreibe, wird geschrieben, während ich mir den Kommentar und die Beiträge anderer Leute ansehe. Es ist möglicherweise nicht das, was Sie tatsächlich eingereicht haben.
A - Coffee Es ist ein Problem festzustellen, ob das 3. und 4. Zeichen einer bestimmten Zeichenfolge gleich sind und das 5. und 6. Zeichen gleich sind.
Der folgende Code wird so wie er ist implementiert. Das ist in Ordnung.
s = input()
if s[2] == s[3] and s[4] == s[5]:
print('Yes')
else: print('No')
B - Golden Coins Wenn Sie den angegebenen Geldbetrag "n" umtauschen und ihn für jeden 500-Yen-Ball in 1000 und für jeden 5-Yen-Ball in 5 umwandeln, was ist der Maximalwert? Ist das Problem.
Die Anzahl der 500-Yen-Bälle beträgt "n // 500" und die Anzahl der 5-Yen-Bälle beträgt "n% 500 // 5".
Ich habe es wie folgt implementiert.
n = int(input())
print(n//500*1000 + n%500//5*5)
C - Traveling Salesman around Lake Angesichts der Lage der Häuser rund um den See ist es wichtig, die Entfernung zu berücksichtigen, um alle Häuser auf dem kürzesten Weg zu umrunden.
Die Position des nördlichen Endes des Sees wurde auf 0 gesetzt, und die Positionen der Häuser wurden von dort aus zwei Runden im Uhrzeigersinn in der Anordnung gespeichert. Ausgehend von einem der Häuser in der ersten Runde berechneten wir die Entfernung um alle Häuser und berechneten den Maximalwert.
K, N = map(int, input().split())
A = list(map(int, input().split()))
A += [a+K for a in A]
minD = 1e6
for n in range(N):
minD = min(minD, A[n+N-1] - A[n])
print(minD)
Die Art zu schreiben war im Kommentar anders. Der See umrundet fast alle bis auf einen Teil. Der Teil, der nicht passiert, befindet sich zwischen den am weitesten entfernten Häusern.
Ich habe es ein wenig umgeschrieben. Das ist schöner.
K, N = map(int, input().split())
A = list(map(int, input().split()))
A.append(A[0]+K)
maxD = 0
for n in range(N+1):
maxD = max(maxD, A[n+1] - A[n])
print(K-maxD)
Nachtrag: Python kann einen negativen Index wie "li [-1]" annehmen, sodass das Array nicht vergrößert werden muss.
D - Line++
Es ist ein Problem, die Verteilung der kürzesten Pfadlänge aus einem gegebenen Graphen zu erhalten.
Es gibt eine Bibliothek namens networkx
, die die Graphentheorie in Python verarbeiten kann. Es ist eine sehr praktische Bibliothek, mit der jeder Parameter aus der Diagrammerstellung abgerufen werden kann. Berechnen wir nun die Verteilung.
import networkx as nx
N, X, Y = map(int, input().split())
X -= 1
Y -= 1
out = [0] * N
G = nx.Graph()
G.add_nodes_from(list(range(N)))
G.add_edges_from([(i, i+1) for i in range(N-1)] + [(X, Y)])
for i in range(N-1):
for j in range(i+1, N):
out[nx.shortest_path_length(G, i, j)] += 1
for i in range(1, N):
print(out[i])
Atcoder kann diese Bibliothek nicht verwenden.
Ich konnte die Graphenerkundung überhaupt nicht studieren, also gab ich auf und ging zum nächsten Problem über.
Ich habe den Kommentar gesehen. Dieses Problem scheint keine schwierige Suche zu erfordern. Es gibt nur zwei Möglichkeiten für den Abstand von Punkt A zu Punkt B: "BA" (wenn Sie nacheinander fortfahren) oder "abs (AX) + 1 + abs (BY)" (wenn Sie die Verknüpfung von XY durchlaufen). Da ist gar nichts. Der kürzere dieser beiden ist der kürzeste Weg.
Der folgende Code ist also eine Neufassung des obigen Codes nur für die kürzeste Routensuchmethode.
N, X, Y = map(int, input().split())
X -= 1
Y -= 1
out = [0] * N
for i in range(N-1):
for j in range(i+1, N):
out[min(j-i, abs(i-X)+1+abs(j-Y))] += 1
for i in range(1, N):
print(out[i])
Ich ging daran vorbei.
E - Red and Green Apples Sie erhalten einen roten Apfel mit einer Köstlichkeit von $ p_i $, einen grünen Apfel mit einer Köstlichkeit von $ q_i $ und einen farblosen Apfel mit einer Köstlichkeit von $ r_i $. Es ist ein Problem, den maximalen Geschmack zu finden, wenn man X rote Äpfel und Y grüne Äpfel isst. Der Schlüssel ist der Umgang mit farblosen Äpfeln.
Nimm X von den roten Äpfeln in der Reihenfolge der Köstlichkeit und Y von den grünen Äpfeln in der Reihenfolge der Köstlichkeit. Alles, was Sie tun müssen, ist, die X + Y-Äpfel durch solche zu ersetzen, die durch farblose Äpfel nicht köstlich sind.
X, Y, A, B, C = map(int, input().split())
P = list(map(int, input().split()))
Q = list(map(int, input().split()))
R = list(map(int, input().split()))
P.sort()
Q.sort()
R.sort()
out = P[-X:] + Q[-Y:]
out.sort()
for i in range(min(C, X+Y)):
if R[-i-1] > out[i]:
out[i] = R[-i-1]
else:
break
print(sum(out))
Damit konnte ich es mit einem Spielraum in der Berechnungszeit lösen.
Das ist alles für diesen Artikel.
Recommended Posts