J'ai participé au codeur yuki 247 (https://yukicoder.me/contests/262). Je ne pouvais résoudre que jusqu'à C dans le temps imparti, mais après la fin, j'ai résolu jusqu'à D, donc je vais mettre à D.
A S'il y a des fruits positifs, triez-les et classez les positifs. Si vous n'en avez que des négatifs, vous pouvez choisir l'un des négatifs les plus récents.
# A
N, K = list(map(int, input().split()))
As = list(map(int, input().split()))
positives = [a for a in As if a >= 0]
negatives = [a for a in As if a < 0]
if positives:
selected = sorted(positives)
else:
selected = [sorted(negatives)[-1]]
selected = selected[-min(K, len(selected)):]
print(sum(selected))
B Si $ N_0 = 0, N_ {i + 1} = AN_i + B $ et $ N_ {n} = 0 $, trouvez le nombre minimum de pas $ n $. C'est $ N_ {n + 1} = \ sum_ {i = 1} ^ n A ^ i B = \ frac {1-A ^ {n + 1}} {1-A} B $, donc $ B Il ne peut être vu que lorsque = 0 $ ou $ A = -1 $.
# B
A, B = list(map(int, input().split()))
if B == 0:
print(1)
elif A == -1:
print(2)
else:
print(-1)
C Découvrez si vous êtes coincé dans l'une des situations suivantes:
1 peut être n'importe quelle différence entre la partie entière de $ RK / M $ et la partie entière de $ LK / M $ étant égale ou supérieure à 1, ou $ R $ ou $ L $ étant un multiple de $ M $. La raison pour laquelle la différence est supérieure à 1 est de considérer quand la différence entre $ LK $ et $ RK $ est inférieure à $ M $.
# C
L, R, M, K = list(map(int, input().split()))
if R * K // M - L * K // M >= 1 or R * L % M == 0 or K == 0:
print('Yes')
else:
print('No')
D Soit $ z_i $ le nombre s'il est nul au $ i $ ème temps, et $ n_i $ s'il n'est pas nul. Dans ce cas, l'équation graduelle suivante peut être créée.
\displaystyle{
\begin{aligned}
z_{i+1} &= (P+1)z_i + 2 n_i, \\
n_{i+1} &= (P-1)z_i + 2(P-1)n_i.
\end{aligned}
}
À propos de la formule de mise à jour de $ z_i $ --1 élément: Total $ P + 1 $ comme ci-dessous
# D
P, K = list(map(int, input().split()))
mod = 10**9 + 7
z_i, n_i = 1, 0
for i in range(K):
z_i, n_i = (P + 1) * z_i + 2 * n_i, (P - 1) * z_i + 2 * (P - 1) * n_i
z_i, n_i = z_i % mod, n_i % mod
print(z_i)
Recommended Posts