From 3cf4d9b2ccc398202de56e6b2ba5dd052bc3376e Mon Sep 17 00:00:00 2001 From: hidehic0 Date: Fri, 31 Jan 2025 18:06:29 +0900 Subject: [PATCH 1/4] =?UTF-8?q?heapq=E3=82=92=E4=BD=BF=E3=81=A3=E3=81=A6?= =?UTF-8?q?=E3=81=84=E3=81=9F=E3=81=AE=E3=81=A7=E3=80=81=E3=82=BD=E3=83=BC?= =?UTF-8?q?=E3=83=88=E3=81=95=E3=82=8C=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B?= =?UTF-8?q?=E3=81=A3=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/math_func.py | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/libs/math_func.py b/libs/math_func.py index c1670a6..c59611e 100644 --- a/libs/math_func.py +++ b/libs/math_func.py @@ -69,8 +69,6 @@ def calc_divisors(N): 計算量は、√Nです 約数は昇順に並んでいます """ - import heapq - result = [] for i in range(1, N + 1): @@ -80,11 +78,11 @@ def calc_divisors(N): if N % i != 0: continue - heapq.heappush(result, i) + result.append(i) if N // i != i: - heapq.heappush(result, N // i) + result.append(N // i) - return result + return sorted(result) def factorization(n): From 99f9e626fa433ed5ad1a9b1aa9e3ae03ec1abc76 Mon Sep 17 00:00:00 2001 From: hidehic0 Date: Fri, 31 Jan 2025 18:20:06 +0900 Subject: [PATCH 2/4] =?UTF-8?q?=E3=83=A6=E3=83=BC=E3=82=AF=E3=83=AA?= =?UTF-8?q?=E3=83=83=E3=83=89=E8=B7=9D=E9=9B=A2=E3=81=AE=E3=82=B3=E3=83=BC?= =?UTF-8?q?=E3=83=89=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/dis.py | 10 ++++++++++ merge_file.bash | 27 ++++++++++++++------------- 2 files changed, 24 insertions(+), 13 deletions(-) create mode 100644 libs/dis.py diff --git a/libs/dis.py b/libs/dis.py new file mode 100644 index 0000000..60ee041 --- /dev/null +++ b/libs/dis.py @@ -0,0 +1,10 @@ +def euclid_dis(x1: int, y1: int, x2: int, y2: int) -> int: + """ + ユークリッド距離を計算します + + 注意: + この関数はsqrtを取りません(主に少数誤差用) + sqrtを取りたい場合は、自分で計算してください + """ + + return ((x1 - x2) ** 2) + ((y1 - y2) ** 2) diff --git a/merge_file.bash b/merge_file.bash index 6a58902..5e7d991 100755 --- a/merge_file.bash +++ b/merge_file.bash @@ -7,19 +7,20 @@ echo "新しいmain.py作成完了" # テンプレ # /bin/cat python/.py >> code/main.py -cat libs/import.py >> code/main.py -cat libs/math_func.py >> code/main.py -cat libs/array_create.py >> code/main.py -cat libs/binary_search.py >> code/main.py -cat libs/modint.py >> code/main.py -cat libs/standard_input.py >> code/main.py -cat libs/yn_func.py >> code/main.py -cat libs/grid.py >> code/main.py -cat libs/memo.py >> code/main.py -cat libs/grath.py >> code/main.py -cat libs/unionfind.py >> code/main.py -cat libs/trie.py >> code/main.py -cat libs/utils.py >> code/main.py +cat libs/import.py >>code/main.py +cat libs/math_func.py >>code/main.py +cat libs/array_create.py >>code/main.py +cat libs/binary_search.py >>code/main.py +cat libs/modint.py >>code/main.py +cat libs/standard_input.py >>code/main.py +cat libs/yn_func.py >>code/main.py +cat libs/grid.py >>code/main.py +cat libs/memo.py >>code/main.py +cat libs/grath.py >>code/main.py +cat libs/unionfind.py >>code/main.py +cat libs/trie.py >>code/main.py +cat libs/dis.py >>code/main.py +cat libs/utils.py >>code/main.py echo "作業完了" From 43b72e89760638b5f00eb7a8ecc8a00e06847538 Mon Sep 17 00:00:00 2001 From: hidehic0 Date: Fri, 31 Jan 2025 18:26:36 +0900 Subject: [PATCH 3/4] =?UTF-8?q?=E3=83=9E=E3=83=B3=E3=83=8F=E3=83=83?= =?UTF-8?q?=E3=82=BF=E3=83=B3=E8=B7=9D=E9=9B=A2=E3=81=AE=E9=96=A2=E6=95=B0?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/dis.py | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/libs/dis.py b/libs/dis.py index 60ee041..62864fe 100644 --- a/libs/dis.py +++ b/libs/dis.py @@ -1,3 +1,6 @@ +from typing import Tuple + + def euclid_dis(x1: int, y1: int, x2: int, y2: int) -> int: """ ユークリッド距離を計算します @@ -8,3 +11,23 @@ def euclid_dis(x1: int, y1: int, x2: int, y2: int) -> int: """ return ((x1 - x2) ** 2) + ((y1 - y2) ** 2) + + +def manhattan_dis(x1: int, y1: int, x2: int, y2: int) -> int: + """ + マンハッタン距離を計算します + """ + + return abs(x1 - x2) + abs(y1 - y2) + + +def manhattan_45turn(x: int, y: int) -> Tuple[int]: + """ + 座標を45度回転します + 回転すると、マンハッタン距離が、チェビシェフ距離になるので、距離の最大値などが簡単に求められます + """ + + res_x = x - y + res_y = x + y + + return res_x, res_y From 556e02c945d69346b32f39962dffba1758aec54a Mon Sep 17 00:00:00 2001 From: hidehic0 Date: Fri, 31 Jan 2025 18:29:18 +0900 Subject: [PATCH 4/4] =?UTF-8?q?=E3=83=81=E3=82=A7=E3=83=93=E3=82=B7?= =?UTF-8?q?=E3=82=A7=E3=83=95=E8=B7=9D=E9=9B=A2=E3=81=AE=E9=96=A2=E6=95=B0?= =?UTF-8?q?=E3=82=92=E8=BF=BD=E5=8A=A0=E3=81=97=E3=81=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- libs/dis.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libs/dis.py b/libs/dis.py index 62864fe..a93656b 100644 --- a/libs/dis.py +++ b/libs/dis.py @@ -31,3 +31,11 @@ def manhattan_45turn(x: int, y: int) -> Tuple[int]: res_y = x + y return res_x, res_y + + +def chebyshev_dis(x1: int, y1: int, x2: int, y2: int) -> int: + """ + チェビシェフ距離を計算します + """ + + return max(abs(x1 - x2), abs(y1 - y2))