Letztes Mal Ergebnisse des gestrigen ABC Heute werden wir das Boot Camp für Anfänger Medium lösen.
** Gedanken ** ** Lesen Sie die Problemstellung richtig **. Das Element von $ A_i $ muss kleiner oder gleich $ 10 ^ 9 $ sein. Es ist schwierig, die Summe mehrerer Elemente wie in der Stichprobe zu berechnen. Daher ist es einfacher, wenn Sie $ K $ Stücke von $ S $ vorbereiten. Wenn $ S $ nicht $ 10 ^ 9 $ ist, ist das andere Element AC, wenn es $ S $ oder mehr ist. Wenn $ S $ $ 10 ^ 9 $ ist, muss es eine ganze Zahl sein, die kleiner oder gleich $ 10 ^ 9 $ aus der Problemstellung ist. Wenn es sich um eine andere Ganzzahl als 1 handelt, kann die Summe $ 10 ^ 9 $ betragen, sodass die anderen Elemente 1 sind.
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)
Ist es eine Spezifikation, dass die Farbe der Seite nur im Schlüsselwettbewerb unterschiedlich ist?
** Gedanken ** Obwohl es grün ist, ist es ein Teediff. Solange die Anzahl der Elemente für die Zeichenfolge, die ein Anagramm ist, gleich ist, sortieren wir jede Zeichenfolge und setzen sie in Counter. ← Ich denke, es ist einfacher zu schreiben. Danach wird die Kombination für die Elemente berechnet, deren Zählerwert 2 oder mehr beträgt. Wenn es sich um math.factorial handelt, wird es zu RE. Verwenden Sie also scipy.
from collections import Counter
from scipy import misc #Achten Sie auf die Version von 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))
** Gedanken ** Sei m die Liste von [False] * N. Wenn $ P_i = i $, sei $ m [i] $ wahr, dann schreibe $ m [i] = wahr $ als T und $ m [i] = falsch $ als F. Wenn die Folge von Elementen von m geteilt wird, wird es (TT, TF). (TFT) kann auch in (TF) und (FT) zerlegt werden. Beide (TT, TF) können mit einem Swap auf (FF) gesetzt werden. Da $ P $ nicht dasselbe Element hat, wird (TF) nicht gegen (TT) ausgetauscht. Gleiches gilt für (TF). Und der Tausch erfolgt nicht kontinuierlich. Wenn $ m [i] $ T ist, kann es von oben immer mit einem einzigen Swap in F geändert werden.
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 #Überprüfen Sie, ob der vorherige Swap vorhanden ist
for i in range(n):
if flag:
flag = False
continue
if m[i]:
flag = True
ans += 1
print(ans)
Japanisch ist schwierig. Ich möchte auch die Implementierung bereinigen. wir sehen uns.
Recommended Posts