Akhmad228's blog

By Akhmad228, history, 8 years ago, In English

I have interesting problem from WCIP3G. I thought that is DP.

And in my DP I have 2 states.

dp[i][j] = answer for subsequence from i to j.

Transitions obviously will be dp[i + 1][j] and dp[i][j - 1].

But how it can be written?

Tags dp
  • Vote: I like it
  • -2
  • Vote: I do not like it

»
8 years ago, hide # |
 
Vote: I like it 0 Vote: I do not like it

#define rg register #define MAXN 110 int n; int dp[MAXN]; int sum[MAXN]; int main(){ ms(sum); read(n); for( rg int i = 1 ; i <= n ; i++ ){ read(dp[i]); sum[i] = sum[i-1] + dp[i]; } for( rg int i = n-1 ; i >= 1 ; i-- ) for( rg int j = i+1 ; j <= n ; j++ ){ rg int dp1 = sum[j] - sum[i-1] - dp[j]; rg int dp2 = sum[j] - sum[i-1] - dp[j-1]; dp[j] = max( dp1 , dp2 ); } printf("%d\n",dp[n] ); return 0; }