AtCoder ABC178 Ceci est un résumé des problèmes du concours AtCoder Beginner Contest 178 qui a eu lieu le 13/09/2020 (dimanche), en commençant par le problème A et en tenant compte des considérations. La seconde partie traite du problème de l'ED. Cliquez ici pour la première moitié Le problème est cité, mais veuillez consulter la page du concours pour plus de détails. Cliquez ici pour la page du concours Commentaire officiel PDF
Énoncé du problème Compte tenu de l'entier $ S $. Découvrez combien de séquences il y a dans lesquelles tous les termes sont des entiers supérieurs ou égaux à $ 3 $ et leur somme est $ S $. Cependant, la réponse peut être très volumineuse, alors imprimez le reste divisé par 10 $ ^ 9 + 7 $.
J'ai eu du mal.
Si $ a_n $ est la réponse lorsque $ S = n $, la formule graduelle suivante est valable, donc la réponse peut être obtenue en calculant la formule graduelle dans l'ordre.
abc178d.py
s = int(input())
mod = 10**9 + 7
a_list = [0] * (2000 + 1)
a_list[0] = 1
a_list[1] = 0
a_list[2] = 0
a_list[3] = 1
for i in range(4, s + 1):
a_list[i] = a_list[i - 1] + a_list[i - 3]
a_list[i] %= mod
print(a_list[s])
Énoncé du problème Il y a $ N $ points sur le plan bidimensionnel, et les coordonnées du $ i $ th point sont $ (x_i, y_i)
. Il peut y avoir plusieurs points aux mêmes coordonnées. Quelle est la distance maximale possible à Manhattan entre deux points différents? Cependant, deux points (x_i,y_i)Quand (x_j,y_j)Distance de Manhattan |x_i−x_j|+|y_i−y_j|$のこQuandをいいます。
Quand j'ai vu le problème pour la première fois, j'ai pensé que je n'aurais pas à penser aux points intérieurs en reliant plusieurs points, mais quand j'ai voulu faire en sorte que le premier point soit sélectionné le plus près possible, j'ai réalisé comment le résoudre. Après tout, il est important de dessiner un diagramme.
De $ x_i + y_i = k_i $, le point le plus proche de $ (1,1) $ (le point où $ k_i $ est le plus petit) et le point le plus proche de $ (10 ^ 9,10 ^ 9) $ ($) Trouvez le point où k_i $ est maximum). De $ -x_i + y_i = n_i $, le point le plus proche de $ (10 ^ 9,1) $ (le point où $ n_i $ est le plus petit) et le point le plus proche de $ (1,10 ^ 9) $ ( Trouvez le point où $ n_i $ est le maximum).
La distance de Manhattan entre $ k_ {max} $ et $ k_ {min} $ ou la distance de Manhattan entre $ n_ {max} $ et $ n_ {min} $ est la distance maximale possible de Manhattan.
abc178e.py
n = int(input())
point_dict1 = {}
point_dict2 = {}
for i in range(n):
x, y = map(int, input().split())
point_dict1[x + y] = (x, y)
point_dict2[y - x] = (x, y)
min_point1 = min(point_dict1)
max_point1 = max(point_dict1)
min_point2 = min(point_dict2)
max_point2 = max(point_dict2)
print(max(max_point1 - min_point1, max_point2 - min_point2))
Personnellement, comparé à l'ensemble de questions habituel, le code source lui-même est simple jusqu'à la question E, est-ce des mathématiques? J'ai eu beaucoup de problèmes d'utilisation, c'était donc mon ensemble de problèmes préféré.
Merci d'avoir lu la seconde moitié jusqu'à la fin.
Recommended Posts