✌️
# キーエンス プログラミング コンテスト2021 A - Two Sequences 2
キーエンス プログラミング コンテスト2021 A - Two Sequences 2
問題へのリンク
問題概要
長さ
制約
ABC中の解答
制約 TLE
となってしまうので何かしらの工夫は必要だと気づいた。けどそれが何かぱっと思いつかなかった。累積和と同じように累積Max的なものを取ればいいのかな?でも
ノートにまとめていくと、
とした。
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
# cn = max1<=i<=j<=n aibj
dp = [A[0], B[0], A[0] * B[0]]
print(dp[2])
for i in range(1, N):
dp[2] = max(dp[2], dp[0] * B[i], A[i] * B[i])
dp[0] = max(dp[0], A[i])
dp[1] = max(dp[1], B[i])
print(dp[2])
公式解法1
N = int(input())
A = list(map(int, input().split()))
B = list(map(int, input().split()))
max_A = [A[0]]
for i in range(1, N):
max_A.append(max(max_A[i - 1], A[i]))
C = [A[0] * B[0]]
for i in range(1, N):
C.append(max(C[i - 1], max_A[i] * B[i]))
for c in C:
print(c)
Discussion