Letztes Mal Wir werden ein Bootcamp für Anfänger machen.
#37 ARC091-C
** Gedanken **
Da die Anzahl der Operationen gerade ist, wird die Kante am Ende immer tabellarisch dargestellt. In ähnlicher Weise werden andere Elemente als Kanten ungerade oft manipuliert, sodass sie am Ende umgedreht werden. Basierend auf der obigen Idee beträgt die Anzahl der Blätter auf der Rückseite am Ende $ (n-2) * (m-2) $. Dies gilt jedoch nicht für $ n \ leq2, m \ leq2
n, m = map(int,input().split())
if n == 1 and m == 1:
print(1)
elif n == 1 or m == 1:
print(max(max(n,m)-2,0))
else:
print((n-2)*(m-2))
** Gedanken ** Wenn das Vielfache von 4 mehr als die Hälfte aller Elemente ist, können Sie eine Zahlenfolge erstellen, die die Bedingung erfüllt. Worüber wir hier nachdenken müssen, ist der Prozess von 2. Im Gegensatz zu anderen Nicht-Vielfachen von 4 erfüllt 2 die Bedingung, wenn es stetig ist. Daher kann durch Subtrahieren der Anzahl von c2 von n und Addieren von 1 zu der Zahl von 2 bei der Berechnung ignoriert werden.
n = int(input())
a = list(map(int,input().split()))
c1 = 0
c2 = 0
c4 = 0
for i in range(n):
if a[i] % 4 == 0:
c4 += 1
elif a[i] % 2 == 0:
c2 += 1
elif a[i] == 1:
c1 += 1
n -= c2
c2 %= 2
n += c2
f = n // 2
if c4 >= f:
print('Yes')
quit()
else:
print('No')
** Gedanken ** Nehmen Sie einfach eins nach dem anderen mit für und fügen Sie es der Zeichenkette hinzu. 'B' wurde in Slices implementiert.
s = input()
ans = ''
for i in range(len(s)):
if s[i] == 'B':
ans = ans[:-1]
elif s[i] == '0':
ans += '0'
else:
ans += '1'
#print(ans)
print(ans)
** Gedanken ** Ich denke, es ist ein ganzzahliges Problem. Erklärung der Formel
import fractions
a, b, c, d = map(int,input().split())
l = int(fractions.gcd(c,d) * c / fractions.gcd(c,d) * d / fractions.gcd(c,d))
#print(l)
x = b // c - a // c
y = b // d - a // d
z = b // l - a // l
if a % c == 0 or a % d == 0:
print(int(b-a-(x+y-z)))
else:
print(int(b-a-(x+y-z))+1)
#print(x,y,z)
** Gedanken ** Die Antwort ist die maximale Verpflichtung der Differenz zwischen den Elementen, also berechnen Sie einfach
import fractions
n, y = map(int,input().split())
x = list(map(int,input().split()))
x.append(y)
x.sort()
d = []
for i in range(n):
d.append(x[i+1]-x[i])
if len(d) !=1:
ans = fractions.gcd(d[0],d[1])
for i in range(n-1):
ans = fractions.gcd(ans,d[i])
print(ans)
else:
ans = d[0]
print(ans)
** Gedanken ** Es ist dasselbe, die Höhe aller Blumen von 0 auf $ h $ und die Höhe aller Blumen von $ h $ auf 0 zu ändern. Benachbarte Blumen, die nicht jedes $ h $ erreicht haben, werden seltener gewässert. Gießen Sie auch keine Blumen, die $ h $ erreicht haben. Daher prüfen wir, ob die Anzahl der Blumen 0 beträgt, und berechnen die maximale Reichweite, die gleichzeitig bewässert werden kann.
n = int(input())
h = list(map(int,input().split()))
ans = 0
for i in range(max(h)):
c = 0
for j in range(n):
if h[j] != 0:
h[j] -= 1
c += 1
else:
if c != 0:
ans += 1
c = 0
if j == n-1 and c != 0:
ans += 1
print(ans)
Ich muss meine Schulhausaufgaben erledigen ... wir sehen uns.
Recommended Posts