Ich bin froh, dass das alte Problem eine gute Leistung hat, aber ich bin gut darin, also möchte ich meine Gedanken straffen. Ich bin nicht gut in DP, deshalb würde ich gerne bald Maßnahmen gegen DP ergreifen (ich glaube, es gab so etwas wie einen DP-Wettbewerb).
Finden Sie heraus, ob $ A \ times B $ ungerade oder gerade ist.
answerA.py
a,b=map(int,input().split())
print("Yes" if (a*b)%2==1 else "No")
Es nimmt die Zeichenfolgen als Eingabe in der Reihenfolge und prüft, ob der erste Buchstabe mit dem Ende des vorherigen Wortes übereinstimmt. Speichern Sie außerdem die Zeichenfolge im Satz und prüfen Sie, ob eine Abdeckung vorhanden ist.
answerB.py
n=int(input())
now=input()
s=set()
s.add(now)
for i in range(n-1):
now2=input()
if now[-1]!=now2[0]:
print("No")
break
now=now2
s.add(now)
else:
if len(s)==n:
print("Yes")
else:
print("No")
Sie können nur y → y + D, y-D bewegen, und da Sie sich am Anfang an der Koordinate X befinden, können Sie nur Koordinaten besuchen, bei denen der Abstand von X ein Vielfaches von D ist. Da nur die maximale Anzahl in D berücksichtigt werden muss, ist die maximale Verpflichtung die Lösung, wenn der Abstand der Koordinaten $ x_1, x_2,…, x_n $ von der X-Koordinate berücksichtigt wird.
answerC.py
from fractions import gcd
n,X=map(int,input().split())
x=list(map(int,input().split()))
ans=abs(X-x[0])
for i in range(1,n):
ans=gcd(abs(X-x[i]),ans)
print(ans)
Erstens ist es schwierig, die Anzahl der Münzen für jedes Quadrat gerade zu machen, da Sie eine Münze für jedes Quadrat bewegen können und es nur ** gerade oder ungerade ** gibt. Ich fand, dass es keine ** gibt. Daher dachte ich an eine Operation, bei der eine gerade Anzahl von Münzen für alle Quadrate ** hergestellt werden kann. Als ich dann auf jede Zeile achtete, stellte ich fest, dass eine solche Operation möglich zu sein scheint, indem ich die Gleichmäßigkeit der Anzahl der Münzen in jedem Quadrat vom linken zum rechten Ende überprüfe. Mit anderen Worten, wenn die Anzahl der Münzen auf dem Quadrat, das Sie überprüfen, ungerade ist, bewegen Sie eine Münze nach rechts, und wenn sie gerade ist, bewegen Sie sie nicht. Auf diese Weise können Sie ** die Anzahl der Münzen für alle Zeilen mit Ausnahme des Quadrats ganz rechts gerade machen **. Darüber hinaus können Sie die Anzahl der Quadrate mit einer geraden Anzahl von Münzen maximieren, indem Sie die Münzen für das Quadrat ganz rechts (dh die Spalte ganz rechts W) von oben nach unten bewegen. Sie können auch keine Münzen auf den Feldern (H, W) bewegen. Wenn jedoch die Gesamtzahl der Münzen auf allen Feldern ungerade ist, können Sie nur die Anzahl der Münzen auf diesem Feld zu einer ungeraden Zahl machen. Im Gegenteil, wenn die Gesamtzahl der Münzen gerade ist, ist auch die Anzahl der Münzen in den (H, W) Quadraten gerade, so dass die Anzahl der Quadrate, in denen gerade Münzen platziert werden, maximiert werden kann. Ich verstehe.
✳︎ Die letzte Ausgabe war 1WA, da sie als Array ausgegeben wurde. Nicht vernachlässigen ** Überprüfen Sie das Ausgabeformat **.
answerD.py
h,w=map(int,input().split())
a=[list(map(int,input().split())) for i in range(h)]
ans=[]
for i in range(h):
for j in range(w-1):
if a[i][j]%2==1:
a[i][j+1]+=1
a[i][j]-=1
ans.append([i+1,j+1,i+1,j+2])
for i in range(h):
if a[i][w-1]%2==1:
if i!=h-1:
a[i+1][w-1]+=1
a[i][w-1]-=1
ans.append([i+1,w,i+2,w])
l=len(ans)
print(l)
for i in range(l):
print(" ".join(map(str,ans[i])))
Recommended Posts