记录编号 | 185670 | 评测结果 | AAAAA | ||
---|---|---|---|---|---|
题目名称 | 石子合并(加强版) | 最终得分 | 100 | ||
用户昵称 | 是否通过 | 通过 | |||
代码语言 | C++ | 运行时间 | 0.228 s | ||
提交时间 | 2015-09-08 09:43:39 | 内存使用 | 61.68 MiB | ||
#include<cstdio> #include<iostream> #include<cstring> #include<algorithm> using namespace std; int N,S[4010],m[4010][4010],w[4010]={0}; void DP() { //for(int i=1;i<=N;i++) m[i][i]=w[i][i]; for(int i=2*N;i>=1;i--) for(int j=i+1;j<=2*N;j++) m[i][j]=max(m[i+1][j],m[i][j-1])+(w[j]-w[i-1]); int ans=0; for(int i=1;i<=N;i++) ans=max(ans,m[i][i+N-1]); printf("%d",ans); } int main() { freopen("stone3.in","r",stdin); freopen("stone3.out","w",stdout); scanf("%d",&N); for(int i=1;i<=N;i++) { scanf("%d",&S[i]); S[i+N]=S[i]; } for(int i=1;i<=2*N;i++) w[i]=w[i-1]+S[i]; DP(); return 0; }