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;
}
posted @ 2025-09-08 18:35  FormulaOne  阅读(5)  评论(0)    收藏  举报