UVa 10891 - Game of Sum
2013-07-01 18:27
351 查看
/* DP: d[i][j] = max { max{sum{i,k} - d[k+1][j]}, max{sum{k,j-1} - d[i][k]} } d[i][j]表示在区间[i, j)之间先拿者可以赢多少。 ps: 数据不强,没用long long也过了 */ #include <cstdio> #include <cstring> using namespace std; const int MAXN = 105; int A[MAXN]; int n; int d[MAXN][MAXN]; int dp() { for(int l=1; l<=n; l++) { for(int i=0; i<=n-l; i++) { int j = i+l; int s = 0; int m = -(1<<30); for(int k=i; k<j; k++) { s += A[k]; if(s - d[k+1][j] > m) m = s - d[k+1][j]; } s = 0; for(int k=j-1; k>i; k--) { s += A[k]; if(s - d[i][k] > m) m = s - d[i][k]; } d[i][j] = m; } } return d[0] ; } int main() { #ifndef ONLINE_JUDGE freopen("in.txt", "r", stdin); #endif while(scanf("%d", &n) == 1 && n) { for(int i=0; i<n; i++) { scanf("%d", &A[i]); } printf("%d\n", dp()); } }
相关文章推荐
- uva 10891 game of sum
- UVa 10891 - Game of Sum
- UVA 10891 Game of Sum
- Uva 10891 Game of Sum
- uva 10891 - Game of Sum
- UVA - 10891 Game of Sum
- UVA 10891 Game of Sum
- uva10891 - Game of Sum(递推,极大极小的思想)
- UVA 10891 Game of Sum
- UVA 10891 Game of Sum(区间DP)
- uva 10891 game of sum
- UVA - 10891 Game of Sum (区间DP)@
- uva 10891 Game of Sum (DP)
- UVA 10891 Game of Sum(区间DP)
- UVa 10891 Game of Sum (区间DP&博弈)
- Uva-10891-Game of Sum
- uva 10891 - Game of Sum
- UVA - 10891 Game of Sum(记忆化搜索 区间dp)
- UVA 10891 Game of Sum(区间DP)
- UVa10891 Game of Sum