void solve() {
    int n;cin >> n;
    vi a(n);
    for (int i = 0;i < n;i++) {
        cin >> a[i];
    }
    vi dp(n + 1);
    dp[0] = a[1];
    dp[1] = max(a[1], a[2]);
    dp[2] = max({a[1], a[2], a[3]});
    for (int i = 3;i < n - 2;i++) {
        dp[i] = max({ dp[i - 1],dp[i - 2],dp[i - 3] + a[i + 1] });
    }
    cout << dp[n - 3] << endl;
}     

转移方程类似打家劫舍