[PYTHON] AtCoder Beginner Contest 045 Rückblick auf frühere Fragen

Benötigte Zeit

スクリーンショット 2020-02-06 12.06.06.png

Impressionen

Das D-Problem hat funktioniert (obwohl es schlecht implementiert wurde). Ich habe jedoch im Eckfall aufgrund der B- und C-Probleme einen Fehler gemacht und 3WA ausgegeben, daher möchte ich darüber nachdenken und es beim nächsten Mal nutzen.

Problem A

Finden Sie einfach die Gegend.

answerA.py


a=input()
b=input()
h=input()
print((int(a)+int(b))*int(h)//2)

B-Problem

Sie müssen nur eine Simulation durchführen. Erfassen Sie genau, um welche Art von Zustand es sich in der while-Anweisung handelt. Überlegen Sie hier, wer an der Reihe ist und welche Alphabetkarte die Person hat.

answerB.py


s=[input() for i in range(3)]
l=[len(s[i]) for i in range(3)]
abc=[0,0,0]
now=0
while abc[now]!=l[now]:
    s_sub=s[now][abc[now]]
    abc[now]+=1
    now=(0 if s_sub=="a" else 1 if s_sub=="b" else 2)
print("A" if now==0 else "B" if now==1 else "C")

C-Problem

Wenn die Länge der Zeichenkette l ist, kann + an l-1 Stellen eingegeben werden, und da ** l klein genug ist, können alle $ 2 ^ {l-1} $ Muster ** berücksichtigt werden. Masu (etwas vollständige Suche). Lassen Sie uns daher über die Addition mit der Stelle nachdenken, an der + eintritt. Betrachten Sie hier die Zeichenfolgen von Zahlen in der Reihenfolge von vorne, wenn + zwischen dem i-ten Zeichen und dem i + 1-ten Zeichen liegt, und betrachten Sie die Addition der Zahl auf der linken Seite und der Zahl auf der rechten Seite, und + ist das i-te Zeichen. Wenn es nicht zwischen die i + 1-Zeichen passt, betrachten Sie die Zahl auf der linken Seite und die Summe der Zahlen auf der rechten Seite als ** Zeichenfolge . Schreiben Sie daher eine vollständige Suche, suchen Sie zwischen den Zahlen in der angegebenen Reihenfolge, und wenn + im j-ten eingegeben wird (j = 0 → l-2), ist die zu diesem Zeitpunkt gespeicherte Zeichenfolge (subst) eine Ganzzahl. Zusätzlich zu ans_sub (vergessen Sie nicht, die j + 1. Zahl auf subst zu setzen), wenn + nicht in jth eingegeben wird (j = 0 → l-2), fügen Sie es subst als Zeichenfolge hinzu. Der Code sieht folgendermaßen aus: ( Bit Ich frage mich, ob ich `(i >> j) & 1``` oder` (1 << j) & i``` verwenden soll, um festzustellen, ob es im Code für die vollständige Suche 1 ist. Ich möchte vereinen ... **)

Nachtrag

Wie ich später bemerkte, verringert sich die Menge an Code, die Sie schreiben, wenn Sie + dazwischen setzen und am Ende basierend auf + teilen.

answerC.py


s=input()
l=len(s)

ans=0
for i in range(2**(l-1)):
    ans_sub=0
    subst=s[0]
    for j in range(l-1):
        if (i>>j)&1:
            ans_sub+=int(subst)
            subst=s[j+1]
        else:
            subst+=s[j+1]
        if j==l-2:
            ans_sub+=int(subst)
    ans+=ans_sub
if l==1:
    print(int(s))
else:
    print(ans)

D Problem

Zuerst hatte ich das Gefühl, dass ich alle Quadrate überprüfen sollte, aber da es O (HW) ist, kann ich es nicht rechtzeitig schaffen. Wenn Sie hier auf die Anzahl der zu füllenden Quadrate achten, beträgt diese 10 ^ 5 oder weniger. Wenn Sie sich also auf ** Füllen ** konzentrieren, können Sie sehen, dass Sie ein Programm schreiben können. Wenn Sie hier ein bestimmtes Quadrat füllen, können Sie sehen, dass das Quadrat in der Tafel von $ 3 \ mal 3 $ enthalten ist, die auf den benachbarten Quadraten zentriert ist. Daher werden die benachbarten Quadrate (von denen die Quadrate, die die Tafel mit $ 3 \ mal 3 $ bilden) gespeichert, und die Quadrate, die in der Tafel mit $ 3 \ mal 3 $ enthalten sind, werden auf diesem Quadrat zentriert angezeigt. Sie können es jedes Mal aktualisieren, wenn Sie kommen. Außerdem ** ist es unmöglich, alle Koordinaten des Zentrums in Bezug auf die räumliche Berechnung zu speichern **, daher versuche ich, nur die Koordinaten zu speichern, die im Wörterbuch erscheinen (alle Quadrate, die nicht einmal erscheinen, sind ( Die Anzahl der Quadrate (die das Zentrum sein können) $ (h-2) \ times (w-2) $ kann von den Koordinaten abgezogen werden.)

answerD.py


h,w,n=map(int,input().split())
d=dict()
def change(a,b):
    global h,w,d
    if 1<=a<h-1 and 1<=b<w-1:
        if (a,b) in d:
            d[(a,b)]+=1
        else:
            d[(a,b)]=1
for i in range(n):
    a,b=map(int,input().split())
    a-=1
    b-=1
    for j in range(3):
        for k in range(3):
            change(a+j-1,b+k-1)
ans=[0]*10
ans[0]=(h-2)*(w-2)

for i in d:
    ans[d[i]]+=1
    ans[0]-=1
for i in range(10):
    print(ans[i])

Recommended Posts

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 070 Rückblick auf frühere Fragen
AtCoder Beginner Contest 105 Rückblick auf frühere Fragen
AtCoder Beginner Contest 112 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 056 Rückblick auf frühere Fragen
AtCoder Beginner Contest 087 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 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 121 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 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 092 Rückblick auf frühere Fragen
AtCoder Beginner Contest 099 Rückblick auf frühere Fragen
AtCoder Beginner Contest 065 Rückblick auf frühere Fragen
AtCoder Beginner Contest 094 Rückblick auf frühere Fragen
AtCoder Beginner Contest 063 Rückblick auf frühere Fragen
AtCoder Beginner Contest 107 Rückblick auf frühere Fragen
AtCoder Beginner Contest 071 Rückblick auf frühere Fragen
AtCoder Beginner Contest 082 Rückblick auf frühere Fragen
AtCoder Beginner Contest 084 Rückblick auf frühere Fragen
AtCoder Beginner Contest 068 Rückblick auf frühere Fragen
AtCoder Beginner Contest 043 Rückblick auf frühere Fragen
AtCoder Beginner Contest 098 Rückblick auf frühere Fragen
AtCoder Beginner Contest 114 Rückblick auf frühere Fragen
AtCoder Beginner Contest 045 Rückblick auf frühere Fragen
AtCoder Beginner Contest 120 Rückblick auf frühere Fragen
AtCoder Beginner Contest 108 Rückblick auf frühere Fragen
AtCoder Beginner Contest 106 Rückblick auf frühere Fragen