Letztes Mal Löse 5 Bootcamp-Probleme
#44 ABC056-C
** Gedanken ** Die Summe der nicht negativen ganzen Zahlen bis i ist $ \ frac {1} {2} n (n + 1) $}}. Diese Summe wird zu $ X $, wenn $ \ frac {1} {2} n (n + 1) = X $, und wenn nach $ n $ aufgelöst wird, $ n = \ frac {-1 \ pm { \ sqrt {8X + 1}}} {2} $. Das Hinzufügen des Ceil-Symbols zur Lösung dieser Gleichung ergibt $ \ lceil \ frac {-1 \ pm {\ sqrt {8X + 1}}} {2} \ rceil $. Das ist die Antwort.
import math
x = int(input())
f = (-1+math.sqrt(8*x+1)) / 2
print(math.ceil(f))
** Gedanken ** Wenn Sie jede Operation umkehren, sterben Sie. Verwenden Sie also bool, um zu verwalten, ob sie rückgängig gemacht wird. Wir verwenden deque, weil wir nur auf die linke und rechte Seite der Daten zugreifen. Sie müssen lediglich die Operation implementieren
from collections import deque
n = int(input())
a = list(input().split())
b = deque([])
r = False
for i in range(n):
if r:
b.appendleft(a[i])
else:
b.append(a[i])
r = not r
if r:
b = reversed(b)
ans = ' '.join(b)
print(ans)
** Gedanken ** Überlegen Sie zunächst, wie viele sccs erstellt werden können, ohne c zu s zu synthetisieren. Der scc, der erstellt werden kann, ohne c zu s zu synthetisieren, ist $ min (N, M // 2) $. Als nächstes betrachten wir den Fall des Compositing. In Kombination werden zwei cs zu einem s. Wenn Sie also versuchen, s aus c zu machen, benötigen Sie vier cs. Alles was Sie tun müssen, ist es zu implementieren.
n, m = map(int,input().split())
if m - 2 * n >= 0: #Ob scc ohne Synthese hergestellt werden kann
ans = n + (m-2*n)//4
print(ans)
else:
print(m//2)
** Gedanken ** Wenn der zu teilende Punkt in der Mitte liegt, gibt es unzählige Teilungsmethoden. Außerdem ist die kleinere Fläche, wenn sie geteilt wird, die Hälfte der Gesamtfläche.
w, h, x, y = map(int,input().split())
s = w * h / 2
if 2*x == w and 2*y == h:
print(s,1)
else:
print(s,0)
** Gedanken ** Das Zählen des $ A_i $ -Elements wird wahrscheinlich TLE sein, also werden wir es auf eine andere Weise zählen. Es wird durch Sortieren und Zählen nach Wertbegrenzer implementiert. Wenn es 4 oder mehr längste Seiten gibt, ist das Quadrat, das auf diesen Seiten gemacht werden kann, das Maximum. Andernfalls handelt es sich um ein Rechteck mit zwei ersten und zwei zweiten Seiten.
n = int(input())
a = list(map(int,input().split()))
a.sort(reverse=True)
c = 0
v = []
for i in range(n-1):
if a[i] != a[i+1]:
c += 1
if c >= 2: #Nur anhängen, wenn zwei oder mehr Seiten vorhanden sind
v.append([a[i],c])
c = 0
else:
c += 1
if a.count(a[-1]) >=2:
v.append([a[-1],a.count(a[-1])])
if len(v) == 0: #Wenn v leer ist, können Sie kein Quadrat erstellen
print(0)
elif v[0][1] >= 4: #Werde ein Quadrat
print(v[0][0]**2)
elif len(v) >= 2: #Rechteck
print(v[0][0]*v[1][0])
Dies ist genug zu lösen. wir sehen uns,
Recommended Posts