4 条题解

  • 1
    @ 2025-12-14 9:37:15

    代码直上

    #include<bits/stdc++.h>
    using namespace std;
    int n,m;
    const int N=305;
    const int INF=0x3f3f3f3f;
    int dp[N][N];
    int a[N];
    int sum[N];
    int main(){
    	cin>>n;
    	memset(dp,INF,sizeof(dp));
    	for(int i=1;i<=n;i++){
    		cin>>a[i];
    		sum[i]=sum[i-1]+a[i];
    		dp[i][i]=0;
    	}
    	//区间dp模板
    	for(int len=2;len<=n;len++){
        	for(int i=1;i<=n-len+1;i++){
           		int j=i+len-1;
           		for(int k=i;k<=j-1;k++){ 
             	    dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+sum[j]-sum[i-1]);
         		}
       		}
    	}
    	cout<<dp[1][n]<<endl;
    	return 0;
    }
    

    信息

    ID
    193
    时间
    5000ms
    内存
    128MiB
    难度
    5
    标签
    递交数
    291
    已通过
    114
    上传者