Dernière fois Résultats de l'ABC d'hier Aujourd'hui, nous allons résoudre le Boot camp pour les débutants Medium.
** Pensées ** ** Lisez correctement l'énoncé du problème **. L'élément $ A_i $ doit être inférieur ou égal à 10 $ ^ 9 $. Il est difficile de calculer la somme de plusieurs éléments comme dans l'échantillon. Par conséquent, ce sera plus facile si vous préparez des morceaux de $ K $ de $ S $. Si $ S $ n'est pas $ 10 ^ 9 $, l'autre élément est AC s'il est $ S $ ou plus. Si $ S $ vaut 10 $ ^ 9 $, il doit s'agir d'un entier inférieur ou égal à 10 $ ^ 9 $ de l'énoncé du problème. Ici, s'il s'agit d'un entier différent de 1, la somme peut être de 10 $ ^ 9 $, donc les autres éléments seront 1.
n, k, s = map(int,input().split())
if s < 10**9:
ans = [s] * k + [10**9] * (n-k)
print(*ans)
else:
ans = [s] * k + [1] * (n-k)
print(*ans)
Est-ce une spécification que la couleur de la page n'est différente que dans le concours de la clé?
** Pensées ** Même s'il est vert, c'est un thé diff. Tant que le nombre d'éléments est le même pour la chaîne de caractères qui est un anagramme, nous trions chaque chaîne de caractères et la plaçons dans Counter. ← Je pense que c'est plus facile d'écrire. Après cela, la combinaison est calculée pour les éléments dont la valeur de comptage est égale ou supérieure à 2. Si c'est math.factorial, il devient RE, alors utilisez scipy.
from collections import Counter
from scipy import misc #Notez la version de scipy
n = int(input())
s = [list(input()) for _ in range(n)]
ss = []
for i in range(n):
a = sorted(s[i])
a = ''.join(a)
ss.append(a)
ss = Counter(ss)
ans = 0
n = len(ss)
k = ss.keys()
for i in k:
if ss[i] == 1:
continue
if ss[i] >= 2:
ans += round(float(misc.comb(ss[i],2)))
print(int(ans))
** Pensées ** Soit m la liste de [Faux] * N. Lorsque $ P_i = i $, soit $ m [i] $ comme Vrai, puis écrivez $ m [i] = Vrai $ comme T et $ m [i] = Faux $ comme F. Si la suite d'éléments de m est divisée, elle devient (TT, TF). (TFT) peut également être décomposé en (TF) et (FT). Les deux (TT, TF) peuvent être réglés sur (FF) avec un échange. Parce que $ P $ n'a pas le même élément, il ne basculera pas (TF) vers (TT). La même chose est vraie pour (TF). Et l'échange ne se fait pas en continu. D'après ce qui précède, si $ m [i] $ est T, il peut toujours être changé en F avec un seul échange.
n = int(input())
p = list(map(int,input().split()))
m = [False] * n
for i in range(n):
if p[i] == i+1:
m[i] = True
ans = 0
flag = False #Vérifiez la présence du swap précédent
for i in range(n):
if flag:
flag = False
continue
if m[i]:
flag = True
ans += 1
print(ans)
Le japonais est difficile. Je souhaite également nettoyer la mise en œuvre. à plus.
Recommended Posts