swarup32756's blog

By swarup32756, history, 8 years ago, In English

I seriously need help on this 510D - Fox And Jumping ,can anybody give a detailed solution of this problem.

Thanks a lot in advance!

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

| Write comment?
»
8 years ago, # |
Rev. 2   Vote: I like it +5 Vote: I do not like it

What did you not understand?

Basically, we need to select any subset of numbers such that the GCD of their l-values is 1. This comes from Bezout's identity. If ax+by=c and c=1, then from any given position, we can move to the immediate adjacent left or right position using some combination of moves.

Now, since n<=300, we can use DP to get the minimum cost of such a subset. We need to maintain the current index and the GCD till now in our DP state. Since l <= 1e9, this will take a lot of memory. But notice that if we fix the first element of our subset, the GCD is always a subset of of the set of its prime factors. Any number <= 1e9 has atmost 9 different prime factors, so you can just use a bitmask (of size 2^9) to represent it. This reduces the space complexity.

Total time complexity = O(n*n*2^9)

Code — I did not use bitmasks in my code but rather a map to store the actual GCD. :)