2 条题解

  • 0
    @ 2025-10-8 16:58:11
    #include<bits/stdc++.h>
    using namespace std;
    typedef long long ll;
    const int N=500+5;
    ll a[N],f[N][N];
    int n;
    
    int main()
    {
    	scanf("%d",&n);
    	for(int i=1;i<=n;i++) scanf("%lld",&a[i]),a[i]=a[i-1]+a[i];
    	
    	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) f[i][j]=1ll<<60;
    	
    	for(int i=1;i<=n;i++)f[i][i]=0;
    	
    	for(int len=2;len<=n;len++)
    		for(int i=1;i+len-1<=n;i++)
    		{
    			int j=i+len-1;
    			
    			for(int k=i;k<j;k++)
    				f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+a[j]-a[i-1]);
    			
    		}
    	
    	printf("%lld",f[1][n]);
    	return 0;
    }
    
    • 0
      @ 2025-10-8 16:58:06
      #include<bits/stdc++.h>
      using namespace std;
      typedef long long ll;
      const int N=500+5;
      ll a[N],f[N][N];
      int n;
      
      int main()
      {
      	scanf("%d",&n);
      	for(int i=1;i<=n;i++) scanf("%lld",&a[i]),a[i]=a[i-1]+a[i];
      	
      	for(int i=1;i<=n;i++)for(int j=1;j<=n;j++) f[i][j]=1ll<<60;
      	
      	for(int i=1;i<=n;i++)f[i][i]=0;
      	
      	for(int len=2;len<=n;len++)
      		for(int i=1;i+len-1<=n;i++)
      		{
      			int j=i+len-1;
      			
      			for(int k=i;k<j;k++)
      				f[i][j]=min(f[i][j],f[i][k]+f[k+1][j]+a[j]-a[i-1]);
      			
      		}
      	
      	printf("%lld",f[1][n]);
      	return 0;
      }
      • 1

      信息

      ID
      1695
      时间
      2000ms
      内存
      1024MiB
      难度
      6
      标签
      递交数
      79
      已通过
      23
      上传者