I seriously need help on this 510D - Fox And Jumping ,can anybody give a detailed solution of this problem.
Thanks a lot in advance!
# | User | Rating |
---|---|---|
1 | tourist | 3690 |
2 | jiangly | 3647 |
3 | Benq | 3581 |
4 | orzdevinwang | 3570 |
5 | Geothermal | 3569 |
5 | cnnfls_csy | 3569 |
7 | Radewoosh | 3509 |
8 | ecnerwala | 3486 |
9 | jqdai0815 | 3474 |
10 | gyh20 | 3447 |
# | User | Contrib. |
---|---|---|
1 | maomao90 | 174 |
2 | awoo | 165 |
3 | adamant | 161 |
4 | TheScrasse | 160 |
5 | nor | 158 |
6 | maroonrk | 156 |
7 | -is-this-fft- | 152 |
8 | orz | 146 |
9 | SecondThread | 145 |
9 | pajenegod | 145 |
I seriously need help on this 510D - Fox And Jumping ,can anybody give a detailed solution of this problem.
Thanks a lot in advance!
Name |
---|
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. :)