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

Benötigte Zeit

スクリーンショット 2020-03-24 19.45.03.png

Impressionen

Ich konnte keine Frage stellen, als ich mich auf den Boden legte und einschlief, weil ich das C-Problem bei Bachacon nicht verstand. Was bedeutet Bachacon? Ich denke, es war ein Gebot, dass dies passieren würde, weil ich Techto mache, ohne daran zu denken, hart zu arbeiten (obwohl ich es jedes Mal fühle). Immerhin habe ich das C-Problem auch nach dem Wettbewerb nicht verstanden. Warum. → Ich habe vergessen, wie man das Limit löst, und ich konnte die Wahrscheinlichkeit nicht sinnlich angehen ... Das D-Problem wird gelöst, nachdem das C-Problem gelöst wurde, während die Antwort betrachtet wird. → Ich konnte die Grundlagen des Spielproblems nicht vollständig verstehen.

Problem A

Mit dem ternären Operator ist das Schreiben einfach.

answerA.py


x,y=input().split()
print("=" if x==y else "<" if x<y else ">")

B-Problem

Überprüfen Sie, ob jede Anzahl von Personen in aufsteigender Reihenfolge von x aus sitzen kann.

answerB.py


x,y,z=map(int,input().split())
for i in range(x,0,-1):
    if i*y+(i+1)*z<=x:
        print(i)
        break

C-Problem

$ X = 1900 \ mal m + 100 \ mal (nm) $, $ p = (1/2) ^, wobei x [ms] die für eine Ausführung erforderliche Zeit und p die Wahrscheinlichkeit ist, in allen Fällen genau zu sein. Offensichtlich wird es m $ sein. Von hier aus möchte ich die Gesamtzeit y [ms] ermitteln, die die Frage beantwortet, aber ich habe versucht, das Limit zu finden **, vorausgesetzt, ich habe hier k Läufe **. Ich habe jedoch völlig vergessen, wie man das Limit findet, und konnte es nicht lösen (ich wollte es wie [dieser Artikel] machen (https://yamakasa.net/atcoder-abc-078-c/) ...). Wenn Sie es wie die Writer-Lösung tun, können Sie es mit einer einfachen linearen Gleichung lösen, ohne die Grenze zu verwenden. Mit anderen Worten, ** die Zeit, die für die erste Übermittlung benötigt wird, ist x und die Übermittlung schlägt 1-p fehl, es dauert ein zusätzliches y **, so dass $ y = x + (1-p) \ mal y $ gilt. Y = x / p wird erhalten. Der Rest ist nur, um dies zu berechnen, also wird es wie folgt sein. ✳︎ Es ist auch klar, dass der erwartete Wert, wie oft ein Ereignis, das mit einer Wahrscheinlichkeit p erfolgreich ist, erfolgreich sein wird, 1 / p ** beträgt, daher sollte daran erinnert werden.

answerC.py


n,m=map(int,input().split())
x=100*n+1800*m
p=2**(-m)
print(int(x/p))

D Problem

Ich habe überhaupt nicht verstanden, als ich darüber nachdachte, aber als ich die Antwort sah, war es nicht so. Ist es nur ein Idiot, der nicht sein Bestes geben kann, um es zu lösen, wenn er dem Standard folgt? ?? Erstens sind diese Probleme ** überwiegend vorteilhaft ** (** das Spiel ist nicht symmetrisch **, das ist also der Fall). Noch auffälliger ist, dass entweder ** x oder y immer die letzte Karte ** nimmt. Ich möchte über diese beiden Dinge nachdenken. Erstens, wenn der erste Angriff ** die letzte Karte in Ihrem ersten Zug nimmt **, können Sie danach nichts mehr tun, also ist es $ abs (a [-1] -w) $. Wenn der erste Angriff ** nicht die letzte Karte in Ihrem ersten Zug nimmt **, können Sie auch die zweite Karte nehmen und das Endergebnis ist $ abs (a_k-a_n) $ (k = Es wird 1 ~ n-1). Der beste erste Schritt dabei ist, $ a_k $ so weit wie möglich von $ a_n $ entfernt zu halten. Im Fall von $ k \ ne n-1 $ gibt ** dem zweiten Angriffsraum jedoch die Möglichkeit, $ a_k $ so nah wie möglich an $ a_n $ ** auszuwählen. Durch Wiederholen dieser Operation wird schließlich $ abs (a_l-a_n) $ (l = 1 ~ n-1) entschieden, und wenn diese Punktzahl kleiner als $ abs (a_l-a_ {n-1}) $ ist, * * Die erste Wahl für den ersten Zug war falsch **. Darüber hinaus kann das Gleiche für den zweiten Angriff gesagt werden, und wenn das Endergebnis größer als $ abs (a_l-a_ {n-1}) $ ist, ** war die Wahl bei der Auswahl der Karte im zweiten Angriff falsch. **Es wird sein. Mit anderen Worten, aus diesem ** ausgeglichenen Zustand ** ergibt sich, wenn die erste Karte in der ersten Runde nicht ausgewählt wird, das Endergebnis $ abs (a_n-a_ {n-1}) $. Ich verstehe. Aus dem oben Gesagten können Sie für den ersten Angriff den größeren Wert aus $ abs (a [-1] -w) $ und $ abs (a_n-a_ {n-1}) $ auswählen. Dies ist wie folgt (auch für den ersten Angriff). Es ist nicht möglich, eine höhere Punktzahl zu wählen (wie oben beschrieben).

answerD.py


n,z,w=map(int,input().split())
a=list(map(int,input().split()))
if len(a)==1:
    print(abs(a[-1]-w))
else:
    print(max(abs(a[-1]-w),abs(a[-1]-a[-2])))

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