Rückblick auf den AtCoder Beginner Contest 160 bis Frage E (Python)

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

Rückblick auf den AtCoder Beginner Contest 159 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 163 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 162 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 154 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 153 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 160 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 167 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 157 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 161 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 155 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 156 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 166 bis Frage E (Python)
Rückblick auf den AtCoder Beginner Contest 165 bis Frage E (Python)
Überprüfung des Atcoders ABC158 bis Frage E (Python)
AtCoder Beginner Contest 102 Rückblick auf frühere Fragen
AtCoder Beginner Contest 072 Rückblick auf frühere Fragen
AtCoder Beginner Contest 085 Rückblick auf frühere Fragen
AtCoder Beginner Contest 062 Rückblick auf frühere Fragen
AtCoder Beginner Contest 113 Rückblick auf frühere Fragen
AtCoder Beginner Contest 074 Rückblick auf frühere Fragen
AtCoder Beginner Contest 051 Rückblick auf frühere Fragen
AtCoder Beginner Contest 127 Rückblick auf frühere Fragen
AtCoder Beginner Contest 119 Rückblick auf frühere Fragen
AtCoder Beginner Contest 151 Rückblick auf frühere Fragen
AtCoder Beginner Contest 075 Rückblick auf frühere Fragen
AtCoder Beginner Contest 054 Rückblick auf frühere Fragen
AtCoder Beginner Contest 110 Rückblick auf frühere Fragen
AtCoder Beginner Contest 117 Rückblick auf frühere Fragen
AtCoder Beginner Contest 070 Rückblick auf frühere Fragen
AtCoder Beginner Contest 112 Rückblick auf frühere Fragen
AtCoder Beginner Contest 076 Rückblick auf frühere Fragen
AtCoder Beginner Contest 089 Rückblick auf frühere Fragen
AtCoder Beginner Contest 069 Rückblick auf frühere Fragen
AtCoder Beginner Contest 079 Rückblick auf frühere Fragen
AtCoder Beginner Contest 067 Rückblick auf frühere Fragen
AtCoder Beginner Contest 093 Rückblick auf frühere Fragen
AtCoder Beginner Contest 046 Rückblick auf frühere Fragen
AtCoder Beginner Contest 123 Überprüfung früherer Fragen
AtCoder Beginner Contest 049 Rückblick auf frühere Fragen
AtCoder Beginner Contest 078 Rückblick auf frühere Fragen
AtCoder Beginner Contest 081 Rückblick auf frühere Fragen
AtCoder Beginner Contest 047 Rückblick auf frühere Fragen
AtCoder Beginner Contest 060 Rückblick auf frühere Fragen
AtCoder Beginner Contest 104 Rückblick auf frühere Fragen
AtCoder Beginner Contest 057 Rückblick auf frühere Fragen
AtCoder Beginner Contest 126 Rückblick auf frühere Fragen
AtCoder Beginner Contest 090 Rückblick auf frühere Fragen
AtCoder Beginner Contest 103 Rückblick auf frühere Fragen
AtCoder Beginner Contest 061 Rückblick auf frühere Fragen
AtCoder Beginner Contest 059 Rückblick auf frühere Fragen
AtCoder Beginner Contest 044 Rückblick auf frühere Fragen
AtCoder Beginner Contest 083 Rückblick auf frühere Fragen
AtCoder Beginner Contest 048 Rückblick auf frühere Fragen
AtCoder Beginner Contest 124 Rückblick auf frühere Fragen
AtCoder Beginner Contest 116 Rückblick auf frühere Fragen
AtCoder Beginner Contest 097 Rückblick auf frühere Fragen
AtCoder Beginner Contest 088 Rückblick auf frühere Fragen
AtCoder Beginner Contest 053 Rückblick auf frühere Fragen
AtCoder Beginner Contest 094 Rückblick auf frühere Fragen
AtCoder Beginner Contest 107 Rückblick auf frühere Fragen
AtCoder Anfängerwettbewerb: D Problemantworten Python