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

Benötigte Zeit

スクリーンショット 2020-04-01 16.39.23.png

Impressionen

Dies ist eine frühere Frage, die ich bereits gelöst habe, aber ich habe den gleichen Fehler im D-Problem erneut gemacht. Die Details des Fehlers werden im Abschnitt D-Problem erwähnt.

Problem A

Es ist eine Gruppe von 3 Personen, also können Sie es durch 3 teilen.

answerA1.py


print(int(input())//3)

B-Problem

Alles, was Sie tun müssen, ist zu zählen, wie viele Farben es gibt, und set zu verwenden, um die Duplikate zu entfernen.

answerB.py


n=int(input())
s=input().split()
print("Three" if len(set(s))==3 else "Four")

C-Problem

Überprüfen Sie zunächst, wie viele Namen mit jedem Buchstaben beginnen. Wenn Sie drei Startzeichen auswählen, können Sie herausfinden, wie viele es gibt, wenn Sie diese drei Zeichen auswählen, indem Sie multiplizieren, wie viele Namen mit jedem Zeichen beginnen. Und da es $ _5C_3 $ Möglichkeiten gibt, den Startcharakter auszuwählen, können Sie überlegen, wie viele Möglichkeiten es gibt, die drei Personen im Betreff auszuwählen, indem Sie die Summe ermitteln.

answerC.py


import itertools
n=int(input())
s=dict()
for i in ["M","A","R","C","H"]:
    s[i]=0
for i in range(n):
    _s=input()
    if _s[0] in ["M","A","R","C","H"]:
        s[_s[0]]+=1
s=list(s.items())
ans=0
for i in range(5):
    for j in range(i+1,5):
        for k in range(j+1,5):
            ans+=(s[i][1]*s[j][1]*s[k][1])
print(ans)

D Problem

Da Sie mehrere Abfragen ** für das Intervall ** verarbeiten müssen, können Sie sehen, dass Sie wahrscheinlich ** kumulative Summe ** verwenden. Es ist auch notwendig, ** die kumulative Summe der magischen Kräfte ** zu berücksichtigen, aber da der Rest von $ R_i $ und $ L_i $ geteilt durch D gleich ist, ** was passiert mit der kumulierten Summe der magischen Kräfte mit dem Rest jeder Zahl * Erwägen *. Zuerst habe ich darüber nachgedacht, den Index jeder Zelle im Array (num) für jeden in die Zelle geschriebenen Rest separat zu speichern, aber ** es ist nicht notwendig, ihn separat zu speichern ** (der Rest in der kumulierten Summe) Ich habe nach der Implementierung festgestellt, dass [Writer-Lösung](siehe https://img.atcoder.jp/abc089/editorial.pdf) für Details. In dieser Implementierung werden auch diejenigen mit den Resten i = 1 bis d-1 im verschachtelten i-1-Array, diejenigen mit i = 0 im d-1 usw. gespeichert. ** Indexverarbeitung Es war sehr mühsam **. Hier werden die Informationen der Quadrate im Array geteilt durch den Rest der Zahlen gespeichert, sodass wir von hier aus die kumulative Summe der magischen Kraft in einem anderen Array (mp) speichern. Die Berechnung der magischen Kraft wird einfach aus der Entfernung von Manhattan berechnet. Wenn Sie diese kumulative Summe finden, können Sie die gesamte magische Kraft ausgeben, die der Abfrage entspricht. Außerdem ist die kumulative magische Kraft, die erforderlich ist, um von "num [g] [0]" zu "num [g] [k]" zu gelangen, "mp [g] [k]" Beachten Sie, dass es notwendig ist, `mp [g] [f] -mp [g] [e]` auszugeben, wenn `` e! = 0```, weil es `ist. ..

answerD.py


from math import ceil
h,w,d=map(int,input().split())
x=ceil((h*w)/d)
num=[[[-1,-1] for j in range(x)] for i in range(d)]#Fall von zu viel(1→0)
mp=[[0]*x for i in range(d)]
a=[list(map(int,input().split())) for i in range(h)]
for i in range(h):
    for j in range(w):
        k,l=a[i][j]%d,a[i][j]//d
        if k==0:
            num[d-1][l-1]=[i,j]
        else:
            num[k-1][l]=[i,j]
for i in range(d):
    for j in range(x):
        if j!=x-1:
            if num[i][j+1]!=[-1,-1]:
                mp[i][j+1]+=(mp[i][j]+abs(num[i][j+1][0]-num[i][j][0])+abs(num[i][j+1][1]-num[i][j][1]))
            else:
                break
q=int(input())
for i in range(q):
    l,r=map(int,input().split())
    if l%d!=0:
        e,f=l//d,r//d
    else:
        e,f=l//d-1,r//d-1
    g= d-1 if l%d==0 else l%d-1
    if e==0:
        print(mp[g][f])
    else:
        print(mp[g][f]-mp[g][e])

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 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 105 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 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 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 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 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 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 053 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 064 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