f(i,j)=min(f(i-1,k)+f(k+1,j)+ai-1*ak*aj)
k表示被抽取的数
1 #include2 #include 3 #include 4 #include 5 #include 6 #include 7 #include 8 using namespace std; 9 const int maxn=1e6+5;10 const int INF=1e9+7;11 int n,dp[105][105],a[105];12 template void red(t &x)13 {14 x=0;15 int w=1;16 char ch=getchar();17 while(ch<'0'||ch>'9')18 {19 if(ch=='-')20 w=-1;21 ch=getchar();22 }23 while(ch>='0'&&ch<='9')24 {25 x=(x<<3)+(x<<1)+ch-'0';26 ch=getchar();27 }28 x*=w;29 }30 void input()31 {32 freopen("input.txt","r",stdin);33 }34 void read()35 {36 red(n);37 memset(dp,0x3f,sizeof(dp));38 for(int i=1;i<=n;++i)39 {40 red(a[i]);41 dp[i][i]=0;42 }43 }44 void work()45 {46 for(int i=1;i<=n;++i)47 for(int j=2;j+i<=n+1;++j)48 {49 int e=i+j-1;50 for(int k=j;k