```cpp
#include<bits/stdc++.h>
long long n,s[1001],f[1001][1001],a[1001],i,x,j;
using namespace std;
int main()
{
cin>>n;
for(i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];
f[i][i]=a[i];
}
for(x=2;x<=n;x++)
for(i=1;i<=n-x+1;i++){
j=i+x-1;
f[i][j]=max(a[i]+a[j]-s[i]-f[i+1][j],a[j]+s[j-1]-s[i-1]-f[i][j-1]);
}
cout<<f[1][n]<<' '<<s[n]-f[1][n];
return 0;
}
```
对56分,WA
by 码农同志 @ 2020-08-02 21:44:36
本白用的是还不是很熟的合并类DP,大佬轻喷
by 码农同志 @ 2020-08-02 21:46:53
@[码农同志](/user/268200) ???计算机是指以最优策略取数吗?还是指随机取数?
by chenzida @ 2020-08-02 21:49:16
应该是指最优策略
by 码农同志 @ 2020-08-02 21:53:23
@[码农同志](/user/268200) 那你的 $f[l][r]$ 的含义是什么?
by chenzida @ 2020-08-02 21:57:34