80分+20分超时!!求助!!
查看原帖
80分+20分超时!!求助!!
712994
ggcggc楼主2023/8/3 19:18
#include<iostream>
#include<stdio.h>
#include<string.h>
#define ri  int
using namespace std;
const int N=305;
int dp[N][N],a[N];
int n,s[N];
int main(){
	std::ios::sync_with_stdio(false);
	std::cin.tie(NULL);
	cin>>n;
	for(ri i=1;i<=n;i++){
		cin>>a[i];
		s[i]=s[i-1]+a[i];
	}
	//长度为1的情况不用合并,所以为零
	for(ri len=2;len<=n;len++){
		for(ri i=1;i<=n-len+1;i++){
			for(ri j=i+len-1;j<=n;j++){
				dp[i][j]=10000000;
				for(ri k=i;k<=j;k++){
					dp[i][j]=min(dp[i][k]+dp[k+1][j]+s[j]-s[i-1],dp[i][j]);
				}
			}
		}
	}
	cout<<dp[1][n]<<endl;
	return 0;
}
2023/8/3 19:18
加载中...