问题标题: 洛谷:P5569石子合并 TLE

0
0
已解决
赵逸凡
赵逸凡
初级启示者
初级启示者
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int n,a[40005],f[5024][5024],sum[40005];
inline int read(){
    int s=0,f=1;
    char ch=getchar();
    while((ch<'0'||ch>'9')&&ch!=EOF){
        if(ch=='-') f=-1;
        ch=getchar();
    }
    while(ch>='0'&&ch<='9'){
        s=s*10+ch-'0';
        ch=getchar();
    }
    return s*f;
}
int main()
{
    scanf("%d",&n);
    for(register int i=1;i<=n;i++)
        a[i]=read();
    memset(f,0x3f,sizeof(f));
    for(register int i=1;i<=n;i++)
        sum[i]=sum[i-1]+a[i];
    for(register int i=1;i<=n;i++)
        f[i][i]=0;
    for(register int l=1;l<n;l++)
        for(register int i=1;i<=n;i++)
           {
                register int j=i+l;
                if(j>n)
                    break;
                for(register int k=1;k<j;k++)
                    if(f[i][j]>f[i][k]+f[k+1][j]+sum[j]-sum[i-1])
                        f[i][j]=f[i][k]+f[k+1][j]+sum[j]-sum[i-1];
            }
    printf("%d\n",f[1][n]);
    return 0;
}

用了些卡常技巧,结果......

求助怎么AC啊


0
已采纳
黄子扬
黄子扬
初级天翼
初级天翼

看到标题:石子合并?不会?

一搜题目,woc蓝题dp

0
0
我要回答