刚学dp一秒,萌新求助(轻喷)
查看原帖
刚学dp一秒,萌新求助(轻喷)
832997
Lenlynn楼主2023/3/1 20:12
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
#define rep(i,a,b) for(int i=(a); i<=(b); ++i)
#define drp(i,a,b) for(int i=(a); i>=(b); --i)
#define icc ios::sync_with_stdio(0); cin.tie(0);cout.tie(0);
#define mem(ar,num) memset(ar, num, sizeof ar)
int f[200020][3][3];
int a[200020];
int main()
{
    icc
    int t;cin>>t;
    while(t--){
        int n;cin>>n;
        rep(i,1,n) cin>>a[i];
        mem(f,0x7f);
        f[1][2][1]=a[1];
        rep(i,2,n){
            f[i][1][1]=min(f[i-1][2][1],f[i-1][2][2]);
            f[i][1][2]=f[i-1][1][1];
            f[i][2][1]=min(f[i-1][1][1],f[i-1][1][2])+a[i];
            f[i][2][2]=f[i-1][2][1]+a[i];
        }
        cout<<min({f[n][1][1],f[n][1][2],f[n][2][1],f[n][2][2]})<<endl;
    }


    
    return 0;
}

为什么多了一维过不了啊,我感觉时间复杂度也没差很多啊

2023/3/1 20:12
加载中...