Il est acceptable de faire le nombre maximum de paires avec la même carte, de reporter s'il y a un surplus, et de donner la priorité au report (c'est-à-dire de reporter la carte actuelle s'il y a un surplus), mais à 0 carte Lorsqu'un report survient, il n'y a pas de carte à utiliser en priorité, vous devez donc rejeter le report.
N = int(input())
result = 0
remainder = 0
for _ in range(N):
A = int(input())
result += (A + remainder) // 2
if A == 0:
remainder = 0
else:
remainder = (A + remainder) % 2
print(result)
Comme la longueur de s est au maximum de 100 et qu'il n'y a que 26 types d'alphabets, il n'est pas TLE même s'il est arrondi. Pour tous les alphabets contenus dans s, en supposant qu'il reste à la fin, la chaîne de caractères t de longueur N est La valeur minimale du nombre d'opérations peut être obtenue en effectuant effectivement l'opération de passage à la chaîne de caractères de longueur N-1.
s = input()
def f(s, c):
result = 0
while len(set(s)) != 1:
t = ''
for i in range(len(s) - 1):
if s[i] == c or s[i + 1] == c:
t += c
else:
t += s[i]
s = t
result += 1
return result
result = float('inf')
for c in set(s):
result = min(result, f(s, c))
print(result)
Vous pouvez manger un nombre pair de sacs avec un nombre impair, et vous pouvez avoir autant de sacs avec un nombre pair que vous le souhaitez. Si le sac avec un nombre impair est un sac et le sac avec un nombre pair est un sac b, la réponse est (<sous). > a </ sub> C 0 </ sub> + a </ sub> C 2 </ sub> + ... + a </ sub> C étage (a / 2) * 2 </ sub>) * ( b </ sub> C 0 </ sub> + b </ sub> C 1 </ sub> + ... + b </ sub> C b </ sub>). À propos, b </ sub> C 0 </ sub> + b < / sub> C 1 </ sub> + ... + b </ sub> C b </ sub> vaut 2 b </ sup>, donc le reste est une boucle Tournez-vous simplement pour trouver le nombre de façons de choisir un nombre impair de sacs.
def comb(n, k):
if n - k < k:
k = n - k
if k == 0:
return 1
a = 1
b = 1
for i in range(k):
a *= n - i
b *= i + 1
return a // b
N, P = map(int, input().split())
A = list(map(int, input().split()))
odds = sum(a % 2 for a in A)
evens = len(A) - odds
print(sum(comb(odds, i) for i in range(P, odds + 1, 2)) * (2 ** evens))
Dans le processus de déplacement, le fait que la pièce se déplace toujours vers la droite ou vers le bas signifie que le nombre de mouvements est (H -1) + (W -1). Le numéro 1 de # avec le point de départ est H + W. - S'il en est un, cela signifie qu'il ne se déplace ni vers le haut ni vers la gauche.
H, W = map(int, input().split())
A = [input() for _ in range(H)]
if H + W - 1 == sum(a.count('#') for a in A):
print('Possible')
else:
print('Impossible')
AGC031A - Colorful Subsequence
Si a apparaît n fois dans la chaîne S, alors un motif qui n'utilise pas a, un motif qui utilise le premier a, un motif qui utilise le second a, ... un motif qui utilise le nième a Il existe un modèle de n + 1. Puisque le nombre de combinaisons est indépendant pour chaque caractère, la réponse est de compter le nombre d'apparitions pour chaque caractère et d'additionner le nombre d'apparitions + 1.
N = int(input())
S = input()
MOD = 1000000007
d = {}
for c in S:
if c in d:
d[c] += 1
else:
d[c] = 1
result = 1
for x in d.values():
result *= x + 1
result %= MOD
result += MOD - 1
result %= MOD
print(result)
Recommended Posts