Dernière fois Nous ferons un camp d'entraînement pour les débutants.
#37 ARC091-C
** Pensées **
Le nombre d'opérations étant pair, l'arête sera toujours table à la fin. De même, les éléments autres que les bords sont manipulés un nombre impair de fois, ils sont donc retournés à la fin. Basé sur l'idée ci-dessus, le nombre de feuilles au verso à la fin est de $ (n-2) * (m-2) $. Cependant, cela ne vaut pas pour $ 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))
** Pensées ** Si le multiple de 4 est supérieur à la moitié de tous les éléments, vous pouvez créer une séquence de nombres qui satisfait à la condition. Ce à quoi nous devons penser ici est le processus de 2. Contrairement aux autres non-multiples de 4, 2 satisfait la condition si elle est continue. Par conséquent, en soustrayant le nombre de c2 de n et en y ajoutant 1, le nombre de 2 peut être ignoré dans le calcul.
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')
** Pensées ** Prenez simplement les s un par un avec for et ajoutez-le à la chaîne de caractères. «B» a été implémenté en tranches.
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)
** Pensées ** Je pense que c'est un problème entier. Explication de la formule
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)
** Pensées ** La réponse est l'engagement maximum de la différence entre les éléments, alors calculez simplement
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)
** Pensées ** Il en va de même pour changer la hauteur de toutes les fleurs de 0 à $ h $ et pour changer la hauteur de toutes les fleurs de $ h $ à 0. Les fleurs adjacentes qui n'ont pas atteint chaque $ h $ seront arrosées moins souvent. N'arrosez pas non plus les fleurs qui ont atteint $ h $. Par conséquent, nous vérifions si le nombre de fleurs est égal à 0 et calculons la plage maximale pouvant être arrosée en une seule fois.
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)
Je dois finir mes devoirs scolaires ... à plus.
Recommended Posts