[PYTHON]

AtCoder Beginner Contest 058 Rückblick auf frühere Fragen

Benötigte Zeit

スクリーンショット 2020-01-08 12.17.21.png

Es ist bedauerlich, dass ich das C-Problem nur in den letzten beiden Malen lösen kann. Ich möchte in der Lage sein, die Probleme der hellblauen und blauen Schwierigkeit zu lösen.

Problem A

Wie es ist

answerA.py


a,b,c=map(int,input().split())

if b-a==c-b:
    print("YES")
else:
    print("NO")

B-Problem

Es ist in Ordnung, wenn Sie die Ausgabe zufällig ändern

answerB.py


o=input()
lo=len(o)
e=input()
le=len(e)
for i in range(lo+le):
    if i%2==0:
        print(o[i//2],end="")
    else:
        print(e[i//2],end="")
print()

Da es am Ende notwendig ist, es in lexikalischer Reihenfolge zu erstellen, erstellen Sie zuerst ein Array von Alphabeten, finden Sie heraus, wie viele es jeweils gibt, und geben Sie sie am Ende zusammen aus. Da wir gemeinsame Dinge zählen, müssen wir uns auch min Zeit nehmen, also müssen wir auch dort vorsichtig sein. Dies ist sehr praktisch, da Sie Python und Zeichenfolgen intuitiv bedienen können.

answerC.py


alp=[chr(i) for i in range(97, 97+26)]
inf=10000000
check=[inf]*26

n=int(input())
for i in range(n):
    s=input()
    ls=len(s)
    check_sub=[0]*26
    for j in range(ls):
        #print(s[j])
        check_sub[alp.index(s[j])]+=1
    for k in range(26):
        check[k]=min(check[k],check_sub[k])
    #print(check_sub)
ans=""
for i in range(26):
    #print(check[i])
    ans+=check[i]*alp[i]
print(ans)

D Problem

Es war ein Problem, das in kurzer Zeit gelöst werden konnte, aber ich habe es aufgrund eines Missverständnisses verpasst. (Ich habe nicht bemerkt, dass ** wenn es keine Fehler im Code gibt, dann gibt es einen Fehler in meiner Überlegung ** ...) Im Folgenden möchte ich das, was ich geschrieben habe, als meine eigene Überlegung auf Papier bringen. Außerdem ist das Auskommentieren im Code ein Code, der auf Ihren eigenen Fehlern basiert.

IMG_5591.JPG

** Ich habe einen Fehler mit den Zählgrundlagen gemacht, alle möglichen Dinge ohne Duplizierung zu zählen **. Von nun an möchte ich meinem Herzen sagen, dass ich in diesem Grundprinzip keinen Fehler machen soll.

answerD.py


mod=1000000007
n,m=map(int,input().split())
x=[int(i) for i in input().split()]
y=[int(i) for i in input().split()]

xc=0
for i in range(1,n):
    a=x[i]-x[i-1]
    l=min(i,n-i)
    #xc+=a*(l*n-((l*l+l)//2))
    xc+=a*(l*(n-l))
    xc%=mod

yc=0
for i in range(1,m):
    a=y[i]-y[i-1]
    l=min(i,m-i)
    #yc+=a*(l*m-((l*l+l)//2))
    yc+=a*(l*(m-l))
    yc%=mod
print((xc*yc)%mod)

Recommended Posts