deepak_097's blog

By deepak_097, history, 6 years ago, In English

Problem- link

Please anybody explain the soln.

  • Vote: I like it
  • 0
  • Vote: I do not like it

| Write comment?
»
6 years ago, # |
  Vote: I like it +8 Vote: I do not like it

see Ashishgup solution . dp cant be more neat than his solution

  • »
    »
    6 years ago, # ^ |
      Vote: I like it +1 Vote: I do not like it

    I saw but unable to understand this single line means why everyone is using suffix array even if we are processing from left to right :(

    ans = max(dp(i + 1), a[i] + suf[i + 1] — dp(i + 1));

    • »
      »
      »
      6 years ago, # ^ |
        Vote: I like it +1 Vote: I do not like it

      My logic was:

      DP(i) stores the maximum value a particular player can get if he starts at the ith index and goes till the end of the array.

      One possibility is, I retain my turn and skip the element, thus going to dp(i+1).

      Other possibility is, I take the ith element (and get a score of a[i]) and lose my turn. If I lose my turn, then the score I get is:

      sum of remaining elements — the maximum score that the other player can get if he starts at index i + 1.

      That is, suf[i+1] — dp(i+1).

      Hence the line: ans = max(dp(i + 1), a[i] + suf[i + 1] — dp(i + 1)).