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 | 3985 |
2 | jiangly | 3814 |
3 | jqdai0815 | 3682 |
4 | Benq | 3529 |
5 | orzdevinwang | 3526 |
6 | ksun48 | 3517 |
7 | Radewoosh | 3410 |
8 | hos.lyric | 3399 |
9 | ecnerwala | 3392 |
9 | Um_nik | 3392 |
# | User | Contrib. |
---|---|---|
1 | cry | 169 |
2 | maomao90 | 162 |
2 | Um_nik | 162 |
4 | atcoder_official | 161 |
5 | djm03178 | 158 |
6 | -is-this-fft- | 157 |
7 | adamant | 155 |
8 | awoo | 154 |
8 | Dominater069 | 154 |
10 | luogu_official | 151 |
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. :)