为什么后面三个点会WA而不是TLE
谁能解答我的问题谁就是我爸爸!!!
#include<bits/stdc++.h>
using namespace std;
int n,t[100005],s[1000][1000],f[1000][1000],minn=0x7fffffff;
int main(){
cin>>n;
for(int i=1;i<=n;i++){cin>>t[i];f[i][i]=t[i];}
for(int l=2;l<=n+1;l++){
for(int i=0,j=i+l-1;j<=n;i++,j++){
f[i][j]=0x7fffffff;
int maxn=0,maxid=0;
//cout<<"!"<<i<<" "<<j<<endl;
int l=i,r=j,mid;
while(l<r){
mid=(l+r)>>1;//相当于g
if(f[i][mid-1]<=f[mid+1][j])l=mid+1;
else r=mid;
}
//cout<<l<<" "<<r<<" "<<endl;
for(int k=i+1;k<l;k++)f[i][j]=min(f[i][j],f[k+1][j]+t[k]);
for(int k=l+1;k<j;k++)f[i][j]=min(f[i][j],f[i][k-1]+t[k]);
f[i][j]=min(f[i][j],max(f[i][l-1],f[l+1][j])+t[l]);
}
}
cout<<f[0][n]<<endl;
}
/*
考虑区间DP
设f[i][j]表示假设x在l~r之间的最小代价
于是我们有f[i][j]=min(f[i][j],max(f[i][k],f[k+1][j])+t[k])
*/