救救孩子吧!一个月!!!

进程调度控我1个月了,谁能救救我



:smiling_face_with_halo: :smiling_face_with_halo: :smiling_face_with_halo:

3 个赞

刚刚不小心顶号了,这才是本人

2 个赞

???啥意思

#include<bits/stdc++.h>
using namespace std;
const int N=5005;
const long long INF=0x3f3f3f3f3f3f3f3f;
long long  f[N][N],cold[N],hot[N],a[N];

int main(){
    int _;
    cin>>_;
    while(_--){
        int n,k;
        cin>>n>>k;
        for(int i=1;i<=n;i++) cin>>a[i];
        for(int i=1;i<=k;i++) cin>>cold[i];
        for(int i=1;i<=k;i++) cin>>hot[i];
        memset(f,0x3f,sizeof(f));
        f[1][0]=cold[a[1]];
        for(int i=1;i<n;i++){
            for(int j=0;j<i;j++){
                if(f[i][j]==INF) continue;
                int cost1=(a[i]==a[i+1]) ?hot[a[i+1]]:cold[a[i+1]];
                f[i+1][j]=min(f[i+1][j],f[i][j]+cost1);
                int cost2;
                if(j==0) cost2=cold[a[i+1]];
                else cost2=(a[j]==a[i+1])?hot[a[i+1]]:cold[a[i+1]];
                f[i+1][i]=min(f[i+1][i],f[i][j]+cost2);
            }
        }
        long long  ans=INF;
        for(int j=0;j<n;j++){
            ans=min(ans,f[n][j]);
        }
        cout<<ans<<endl;
    }
    return 0;    
}

用动态规划

回老帖!