Diesmal konnte ich mein Bestes geben, bis D. Normalerweise kann ich mich überhaupt nicht konzentrieren, aber ich kann mich während des Wettbewerbs möglicherweise immer mehr konzentrieren. Danach denke ich, dass, wenn Sie etwas mehr typische Leistung hinzufügen, der Boden stabil ist und Sie die Rate wieder erhöhen können. Ich möchte im Juli blau werden, aber ich denke, das hängt von meiner harten Arbeit und Mentalität ab.
Wie es ist
A.py
a=int(input())
print(a*(1+a+a**2))
Wir werden prüfen, ob sie gleich sind. Der boolesche Wert ist 0,1, Sie können ihn also so hinzufügen, wie er ist. Ich denke, es kann einfacher geschrieben werden, indem man itertools oder map verwendet.
B.py
s=input()
t=input()
ans=0
for i in range(len(s)):
ans+=(s[i]!=t[i])
print(ans)
Die Erwartung wurde zur Überzeugung. Für das C-Problem versuche ich, das Problem zu formulieren, das für den zukünftigen Wettbewerbsprofi unverzichtbar ist.
Ich mag das aktuelle C-Problem sehr, weil es eine Rezension ist, weil es einige Probleme gibt, die ich gerne vergesse. Natürlich fühle ich mich unwohl, wenn ich es fehlerhaft mache.
Wenn es bei einer gierigen Richtlinie ein Buch gibt, das Sie sofort unten lesen, ist es eine Verschwendung, sodass Sie sehen können, dass es unmöglich ist. Hier ** gibt es zwei Schreibtische A und B, also möchte ich versuchen, eine Variable zu reparieren **. Nehmen wir daher an, es hätte $ SA $ benötigt, um das $ i $ -te Buch von oben auf Schreibtisch A zu lesen. Wählen Sie dann für den Rest das Buch auf Schreibtisch B aus, das innerhalb von $ K-SA $ Minuten von oben gelesen werden kann.
Um die Informationen zu erhalten, die wiederholt angezeigt werden ** wie viele Bücher in Minuten gelesen werden können ** für $ O (1) $ **, ist die Zeit erforderlich, die zum Lesen jedes durch Eingabe empfangenen Buches benötigt wird. Die kumulative Summe ** sollte festgelegt werden, also habe ich es in der vorherigen Berechnung getan. (Außerdem ist es zu diesem Zeitpunkt einfacher zu implementieren, wenn Sie am Anfang 0 als Element hinzufügen ** 0 Bücher von oben lesen **.)
Da die Zeit, die zum Lesen eines Buches benötigt wird, immer positiv ist, wird die kumulierte Summe in einer monoton ansteigenden Spalte angezeigt, sodass Sie das Buch auswählen können, das innerhalb von $ K-SA $ Minuten oben in den Büchern auf Schreibtisch B gelesen werden kann. Kann mit einer Dichotomie durchgeführt werden. Diese Dichotomie findet den Index ** des größten Elements unter ** $ K-SA $, aber ** (Index des kleinsten Elements größer als $ K-SA $) -1 ** Da sie den gleichen Wert haben, sollte er (Index erhalten durch bisect_right
) -1 sein. Wenn $ K-SA <0 $ ist, ist der erforderliche Index außerdem -1, daher muss er ausgeschlossen werden. Seien Sie also vorsichtig.
Von oben kann es mit $ O (N \ times \ log {M}) $ implementiert werden.
C.py
from itertools import accumulate
from bisect import bisect_left,bisect_right
n,m,k=map(int,input().split())
a=[0]+list(accumulate(map(int,input().split())))
b=[0]+list(accumulate(map(int,input().split())))
ans=[0]
for i in range(n+1):
c=bisect_right(b,k-a[i])-1
if c!=-1:
ans.append(c+i)
print(max(ans))
Ich bereue es, weil ich anfing, in eine etwas seltsame Richtung zu denken.
Erstens, wenn Sie alle Brüche aufzählen, wird $ O (N \ sqrt {N}) $ offensichtlich nicht rechtzeitig sein, und wenn Sie die Primzahlen mit dem Eratostenes-Sieb aufzählen, wird $ O (N \ log {N}) $ rechtzeitig für C ++ sein. Ich dachte, aber ich habe es vermieden (weil ich nicht gut darin bin, es umzusetzen).
Ich denke, dass es nicht viele Optionen gibt, wenn Sie diese beiden schneiden. Was Sie hier denken sollten, ist, dass ** ein Bruch leicht zu berücksichtigen ist, wenn man seine Vielfachen betrachtet **. Daher wurden ** Experimente in aufsteigender Reihenfolge durchgeführt. Dann können Sie die folgenden Eigenschaften erfassen.
$ i $ ist ein Kandidat für einen Bruch, und der rechts ist ein Kandidat für eine Zahl, die $ i $ als Bruch hat. Um die Summe von $ K \ mal f (K) $ mit $ K = 1 $ ~ $ N $ zu ermitteln, berücksichtigen Sie die Summe der Zahlen, die auf der rechten Seite der obigen Abbildung und für jedes $ i $ auf der rechten Seite erscheinen. Ist eine Gleichheitssequenz und ihre Summe kann leicht mit $ O (1) $ berechnet werden, sodass sie für alle $ i $ berechnet und mit $ O (n) $ implementiert werden kann.
✳︎ Die Summe der Gleichheitsfolge wird berechnet aus (erster Term + letzter Term) ((letzter Term - erster Term +1) / Toleranz) / 2.
D.py
n=int(input())
ans=0
for i in range(1,n+1):
x,y=i,(n//i)*i
ans+=((n//i)*(x+y)//2)
print(ans)
Ich frage mich, ob ich mich in einem anderen Artikel mit dem Kapselungsprinzip befassen und es in diesem Artikel schreiben werde. Ich habe das Problem bereits gelöst und werde es später heute aktualisieren.
Ich konnte nicht, weil ich nur den Namen Nim kannte. Ich denke, es ist einfach, wenn du Nim kennst (ich werde es am Montag lösen).
Recommended Posts