PhenomeneCetteAnnee's blog

By PhenomeneCetteAnnee, history, 5 weeks ago, In English,

I can't solve this problem: http://www.spoj.com/HSPL09/problems/HS09NLG/

Can the problem somehow be reduced to NIM game?

 
 
 
 

»
5 weeks ago, # |
  Vote: I like it +3 Vote: I do not like it

Yes, you can use Sprague–Grundy theorem. To find the grundy numbers, you may use dp such as: dp(i, j) — grundy number for a stack with i stones and having taken j stones from this stack in the previous round. You may use j as 0 in the initial call, where you can take every but one stone from the stack. Then, you may precompute them in an array g[i] from 1 to 300 by calling g[i] = dp(i, 0). For a query, just xor the precomputed values and check whether it is 0.