문제

링크

풀이

#include <stdio.h>
 
int max(int a, int b) {
  return a > b ? a : b;
}
 
void solve(void) {
  int n;
  int a[2][100001], dp[2][100001];
 
  scanf("%d", &n);
  for (int i=0; i<2; i++) {
    for (int j=1; j<=n; j++) {
      scanf("%d", &a[i][j]);
    }
  }
 
  dp[0][1] = a[0][1];
  dp[1][1] = a[1][1];
  for (int i=2; i<=n; i++) {
    dp[0][i] = max(a[0][i] + dp[1][i-1], dp[0][i-1]);
    dp[1][i] = max(a[1][i] + dp[0][i-1], dp[1][i-1]);
  }
  printf("%d\n", dp[0][n] > dp[1][n] ? dp[0][n] : dp[1][n]);
}
 
int main(void) {
  int t;
 
  scanf("%d", &t);
  while (t--) {
    solve();
  }
  return 0;
}