Ich bin neu in solchen Dingen, also weiß ich es nicht. Es macht einfach Spaß, logisch zu denken und das Gelernte auszugeben und zu bestätigen. Während ich arbeite, stelle ich fest, dass einige große IT-Unternehmen AtCoder-Ergebnisse vergeben. In diesem Sinne kann es nicht nur als Selbstzufriedenheit, sondern auch objektiv beurteilt werden. Im Moment löse ich in der Reihenfolge von hier "Was als nächstes nach der Registrierung bei AtCoder zu tun ist - Wenn Sie so viel lösen, können Sie genug kämpfen! 10 vergangene Fragen-".
[Problemzusammenfassung] Es gab insgesamt NN 10000 Yen-Rechnungen, 5000 Yen-Rechnungen und 1000 Yen-Rechnungen, und der Gesamtbetrag betrug YY Yen. Finden Sie einen Satz der Anzahl der Rechnungen für jeden Betrag, der diese Bedingungen erfüllt. Wenn eine solche Situation nicht bestehen kann, geben Sie -1 -1 -1 aus.
[Beschränkungen]
1≤N≤2000 1000≤Y≤2∗107 N ist eine ganze Zahl Y ist ein Vielfaches von 1000
Haben Sie zuerst den Teil geschrieben, der als Kommentar betrachtet werden sollte? Das ist. Aber ich bin froh, dass ich es gelesen habe, nachdem ich es gelöst habe. Ich war in letzter Zeit süchtig nach Muskeltraining, also habe ich versucht, es mit Powerplay durchzusetzen. Ich denke, dass eine absolute Lösung herauskommen wird, wenn es keine zeitliche Begrenzung gibt, aber stattdessen musste ich darüber nachdenken, wie ich sie optimieren kann. Es ist das Gleiche wie die Wahrscheinlichkeit und Reihenfolge, die ich als Schüler hatte, und es braucht Zeit, um alle zu finden. Also, 10.000 Yen Rechnung und 5.000 Yen Rechnung Wenn Sie feststellen, dass die Anzahl der 1000-Yen-Scheine automatisch festgelegt wird, wenn Sie die Anzahl kennen, scheint dieses Problem in Ordnung zu sein
from sys import stdin
N,Y = [int(x) for x in stdin.readline().rstrip().split()]
a = -1
b = -1
c = -1
for i in range(N+1):
for j in range(N-i+1):
if i+j+(N-i-j) == N and Y == 10000*i + 5000*j + 1000*(N-i-j):
a = i
b = j
c = (N-i-j)
break
print(str(a)+' '+str(b)+' '+str(c))
Trotzdem war die richtige Antwort richtig, aber ich bedauere, dass wir uns bemühen sollten, die Verarbeitungsgeschwindigkeit zu erhöhen und die Größe zu verringern. Ich wollte mich auch an das Format erinnern. Was ich diesmal gelernt habe ・ -Eingabemethode in der Wettbewerbsprogrammierung -Optimierung der Kombination
ist! Wenn Sie Ihren Kopf benutzen und etwas tun, das weder ah noch so ist, ist das Erfolgserlebnis erstaunlich. Tabak ist köstlich. Wenn ich nichts über Wettbewerbsprogrammierung wusste, habe ich die Eingabedaten einmal in die Liste aufgenommen, jedes Mal herausgenommen, in die Variable eingefügt und so weiter, also war es ein redundanter Code. Ich wollte es dieses Mal ordentlich eingeben, also habe ich versucht, die Listeneinschlussnotation und das stdin-Modul zu verwenden!
Die Kombination ist wie oben! Es ist erst der Anfang, aber programmiert man eine Reihe von Anwendungen des Grundwissens, solange man ein Grundkonzept hat? ?? ?? Wenn Sie sich jedes Mal an das Modul erinnern, können Sie es immer mehr tun, oder? ?? ?? Das Mädchen in mir wird bemerkt. Ich möchte mehr und mehr mit einem unbesiegbaren Verstand tun. Bitte entschuldigen Sie mein schlechtes Schreiben.
Recommended Posts