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

Benötigte Zeit

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

Impressionen

Ich habe es zusammen mit ABC088 gelöst, das ich gleichzeitig geben werde. Eigentlich sind es 70 Minuten, aber ich war glücklich, weil ich die beiden Wettbewerbe in insgesamt 120 Minuten lösen konnte. Ich konnte mir das D-Problem einfallen lassen, weil es viel mehr als ein Rätsel war und dem AGC-Problem ähnelte, das ich zuvor gelöst hatte.

Problem A

Ich nahm mir ein wenig Zeit und dachte, dass das Ticket für unbegrenzte Fahrten nicht billiger sein könnte als das reguläre Ticket.

answerA1.py


a,b,c,d=[int(input()) for i in range(4)]
print(min(a,b)+min(c,d))

B-Problem

Anstatt eins nach dem anderen zu zählen, werden wir feststellen, ob die Teilnehmer jeden Tag Schokolade essen. Da wir $ 1, A_i + 1,2 A_i + 1,… $ essen, sollten wir beurteilen, ob der Rest geteilt durch $ A_i $ 1 Tag beträgt, aber nur wenn A_i 1 ist, wird der Rest 0. Daher müssen Sie vorsichtig sein.

answerB.py


n=int(input())
d,x=map(int,input().split())
a=[int(input()) for i in range(n)]
ans=0
for i in range(1,d+1):
    for j in range(n):
        if a[j]==1:
            ans+=(i%a[j]==0)
        else:
            ans+=(i%a[j]==1)
print(ans+x)

C-Problem

Ich habe es während des Wettbewerbs nicht bemerkt, aber es fällt mir leicht, $ A_0 = 0 $ und $ A_ {n + 1} = 0 $ zur Eingabe $ A_1, A_2,…, A_n $ ** hinzuzufügen. Da jeder Touristenort einzeln storniert wird, dachte ich, dass es besser wäre, den Unterschied zu berücksichtigen, wenn ein Touristenort vom Gesamtbetrag der ursprünglichen Reise storniert wurde. Zu diesem Zeitpunkt kann die folgende Formel festgelegt werden, wenn die Summe beim Besuch aller Touristenorte in der Reihenfolge S beträgt. スクリーンショット 2020-04-01 13.22.35.png Wenn Sie den i-ten Touristenort von hier aus nicht besuchen, ist der Gesamtbetrag zu diesem Zeitpunkt der Unterschied, wenn man den Unterschied berücksichtigt.S-|A_i-A_{i-1}|-|A_{i+1}-A_i|+|A_{i+1}-A_{i-1}|Wird sein. Wenn Sie mit i = 1 ~ n darüber nachdenken, können Sie die Antwort finden.

answerC.py


n=int(input())
a=list(map(int,input().split()))
base=0
for i in range(n+1):
    if i==0:
        base+=abs(a[0])
    elif i==n:
        base+=abs(a[n-1])
    else:
        base+=abs(a[i]-a[i-1])
ans=[]
for i in range(n):
    if i==0:
        ans.append(base+abs(a[1])-abs(a[0])-abs(a[1]-a[0]))
    elif i==n-1:
        ans.append(base+abs(a[n-2])-abs(a[n-1])-abs(a[n-2]-a[n-1]))
    else:
        ans.append(base+abs(a[i+1]-a[i-1])-abs(a[i+1]-a[i])-abs(a[i]-a[i-1]))
for i in range(n):
    print(ans[i])

answerC_better.py


n=int(input())
a=list(map(int,input().split()))
b=[0]
b.extend(a)
b.append(0)
a=b
base=0
for i in range(n+1):
    base+=abs(a[i+1]-a[i])
ans=[]
for i in range(1,n+1):
    ans.append(base+abs(a[i+1]-a[i-1])-abs(a[i+1]-a[i])-abs(a[i]-a[i-1]))
for i in range(n):
    print(ans[i])

D Problem

Da eine ausgegeben wird, gibt es nur **, um die für Sie geeignete zu finden **. Diese Art von Problem tritt häufig in AGC auf. Wenn Sie jedoch nicht klarstellen, was Sie tun möchten, betreten Sie wahrscheinlich das Labyrinth. Erstens habe ich versucht, entweder A oder B auf 0 zu setzen, da dieses Problem zwei Variablen A und B enthielt. Wenn jedoch ** 0 ist, wird der Rest verbunden **, daher dachte ich, es wäre besser, wenn es keinen Unterschied zwischen A und B gäbe. Um den Unterschied zwischen A und B zu beseitigen, habe ich beschlossen, ihn in ** kleine Strukturen zu unterteilen, die den Unterschied frei einstellen können **. Außerdem dachte ich zu diesem Zeitpunkt, dass es einfacher wäre, ein für mich bequemes Gitter zu erstellen, wenn ich ** das Gitter so breit wie möglich und eine Verbindungskomponente so klein wie möglich mache **. Das erste, was mir in den Sinn kam, war eine Kombination der folgenden Mindeststrukturen.

IMG_0155.JPG

Ich habe versucht, eine Struktur zu erstellen, die A und B erfüllt, indem ** die obigen Strukturen so kombiniert wurden, dass die umgekehrten Muster nebeneinander liegen, aber es hat nicht funktioniert. Wenn jedoch das gleiche Muster beim Experimentieren mit dieser Struktur kombiniert wurde, wurde es wie folgt. Im Fall dieses Musters ist die weiße Verknüpfungskomponente 0 bis 50 und die schwarze Verknüpfungskomponente 1, daher dachte ich, es wäre sehr einfach anzupassen. (Das umgekehrte Muster beträgt 0 bis 50 für die Black-Link-Komponente und 1 für die White-Link-Komponente.)

IMG_0156.JPG

In dem obigen Muster gibt es eine kleine Verschwendung von Schwarz in dem Teil, in dem sich die kleinen Strukturen überlappen, so dass ** reduzierte Verschwendung und Verbesserung ** die Struktur darunter ist.

IMG_0157.JPG

Hier setzen wir die Höhe der obigen Struktur auf 100 und die Breite auf 50 und verbinden die umgekehrten Muster. Dann ist für die obige Struktur die weiße Verknüpfungskomponente 0 bis 25 × 50 und die schwarze Verknüpfungskomponente 1, und in der umgekehrten Musterstruktur ist die weiße Verknüpfungskomponente 1 und die schwarze Verknüpfungskomponente ist 0 bis 25 × 50. Ich werde. Wenn sie verbunden sind, beträgt die weiße Verbindungskomponente daher 1 bis 25 × 50 und die schwarze Verbindungskomponente 1 bis 25 × 50. Wenn daher 1 <= A <= 500 und die Grenze von 1 <= B <= 500 ist, kann das Raster mit dieser Methode erstellt werden.

answerD.py


a,b=map(int,input().split())
print("100 100")
a-=1
b-=1
for i in range(100):
    if i%2==0:
        print("."*50+"#"*50)
    else:
        for j in range(50):
            if j%2==0 or j==49:
                print(".",end="")
            else:
                if b>0:
                    print("#",end="")
                    b-=1
                else:
                    print(".",end="")
        for j in range(50):
            if j%2==0 or j==49:
                print("#",end="")
            else:
                if a>0:
                    print(".",end="")
                    a-=1
                else:
                    print("#",end="")
        print("")

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 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 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
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