λ©λͺ¨λ¦¬ : 2676 KB
μκ° : 132 ms
#include <stdio.h>
#include <algorithm>
int dp[2][100001], arr[2][100001];
int main(){
int t, n, i, j;
scanf("%d", &t);
while(t--)
{
scanf("%d", &n);
for (i = 0; i <= 1; i++)
for (j = 1; j <= n; j++)
scanf("%d", &arr[i][j]);
dp[0][0] = dp[1][0] = 0;
dp[0][1] = arr[0][1];
dp[1][1] = arr[1][1];
for (i = 2; i <= n; i++) {
dp[0][i] = std::max(dp[1][i - 1], dp[1][i - 2]) + arr[0][i];
dp[1][i] = std::max(dp[0][i - 1], dp[0][i - 2]) + arr[1][i];
}
printf("%d\\n", std::max(dp[0][n], dp[1][n]));
}
return (0);
}
π νμ¬ μ€ν°μ»€μμ μ νμ ν μ μλ μ€ν°μ»€λ 1μΉΈ μ€λ₯Έμͺ½ λκ°μ or 2μΉΈ μ€λ₯Έμͺ½ λκ°μ μ μ νν μ μλ€
κ·Έ μ€μμ μ΅λκ°μ΄ λλ κ°μ μ ννλ κ²μ΄ good
κ° μμΉμμμ μ΅λκ°μ κ°μ§λ dp λ°°μ΄μ μΆκ°λ‘ μμ±
0λ²μ§Έ μ€
$dp[0][i] = arr[0][i] + Max(dp[1][i-1], dp[1][i-2])$
1λ²μ§Έ μ€
$dp[1][i] = arr[1][i] + Max(dp[0][i-1], dp[0][i-2])$
π 2λ²μ§Έ ~ nλ²μ§Έ κΉμ§ μμλλ‘ μμ 곡μμ λμ
dp[0][0] = 0;
dp[1][0] = 0;
dp[0][1] = arr[0][1];
dp[1][1] = arr[1][1];