公式
A - 数値列の一致 / Matching Sequences 解説 by admin
Qwen3-Coder-480B概要
数値列 \(A\) と \(B\) の各要素を一致させるために必要な最小の操作回数を求めます。各要素に対して、どちらかの数値を1ずつ増減させることができます。
考察
各要素 \(i\) について、\(A_i\) と \(B_i\) を一致させるためには、差の絶対値 \(|A_i - B_i|\) 回の操作が必要です。これは、どちらか一方をもう一方に合わせるまで増減させる必要があるためです。
例えば、\(A_i = 3\), \(B_i = 7\) のとき、少なくとも \(|3 - 7| = 4\) 回の操作が必要です。この操作は他の要素に影響を与えないため、各要素を独立に考えることができます。
したがって、全要素についての操作回数の合計が答えになります。これ以上減らすことはできないため、これが最適解となります。
アルゴリズム
各要素 \(i\) に対して \(|A_i - B_i|\) を計算し、その総和を取ることで答えを得ます。
具体的な手順: 1. 各 \(i\) について \(|A_i - B_i|\) を求め、合計に加算していく。 2. 最終的な合計値を出力する。
計算量
- 時間計算量: \(O(N)\)
- 空間計算量: \(O(1)\) (入力の配列を除く)
実装のポイント
- 各要素の差の絶対値を合計するだけなので、シンプルなループと
abs()関数を使用します。 - 入力の範囲が大きい(\(10^9\))ですが、差の絶対値の合計は最大で \(2 \times 10^{14}\) 程度になりえるので、Python では標準の整数型で問題ありません。
## ソースコード
```python
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
total_operations = 0
for i in range(N):
total_operations += abs(A[i] - B[i])
print(total_operations)
この解説は qwen3-coder-480b によって生成されました。
投稿日時:
最終更新: