公式
E - Max Ai+Bj 解説
by
E - Max Ai+Bj 解説
by
sotanishy
\(i,j\) の組み合わせは \(N^2\) 個あるので,すべての \(i,j\) の組に対して \(A_i+B_j\) の値を調べていては,実行時間制限に間に合いません.
ここで,\(\max_{1 \leq i,j \leq N} (A_i + B_j) = \max_{1 \leq i \leq N} A_i + \max_{1 \leq j \leq N} B_j\) と分解できることを利用します.\(\max_{1 \leq i \leq N} A_i\) は,\(A\) の要素を一つ一つ調べることで,\(O(N)\) 時間で求めることができます.\(\max_{1 \leq j \leq N} B_j\) も同様です.よって,全体で \(O(N)\) 時間で問題を解くことができます.
実装例 (Python)
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
print(max(A) + max(B))
実装例 (C++)
#include <bits/stdc++.h>
using namespace std;
int main() {
int N;
cin >> N;
int a = -1e9, b = -1e9;
for (int i = 0; i < N; ++i) {
int x;
cin >> x;
a = max(a, x);
}
for (int i = 0; i < N; ++i) {
int x;
cin >> x;
b = max(b, x);
}
cout << a + b << endl;
}
投稿日時:
最終更新: