ABC373C
题意
给定两个长度为 \(N\) 的序列 \(A,B\),求 \(A_i+B_j(1 \le i,j \le N)\) 的最大值。
\(1 \le N \le 5 \times 10^5,1 \le \left| A_i\right|,\left| B_j\right| \le 10^9\)。
解法
显然有 \(\max (A_i+B_j)=\max A_i + \max B_j(1 \le i,j \le N)\),因此对 \(A,B\) 序列分别求最大值,相加即为答案。
时间复杂度 \(O(n)\),实现时可以将第一个数直接作为最大值,避免初始化的问题。
#include <iostream>
#include <cstdio>
#include <cmath>
#define int long long
using namespace std;
int n,mx1,mx2,a;
signed main()
{
cin >> n;
cin >> mx1;
for( int i = 2 ; i <= n ; i ++ )
{
cin >> a;
mx1 = max( mx1 , a );
}
cin >> mx2;
for( int i = 2 ; i <= n ; i ++ )
{
cin >> a;
mx2 = max( mx2 , a );
}
cout << mx1 + mx2;
return 0;
}
我们会走到一起的。