Could somebody explain the approach for Problem B, 157-div1 Little Elephant and Elections, especially the DP approach that is mentioned in the editorials (mainly how to write the state dp ( state[position][less][count] ))
# | 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 | 150 |
Could somebody explain the approach for Problem B, 157-div1 Little Elephant and Elections, especially the DP approach that is mentioned in the editorials (mainly how to write the state dp ( state[position][less][count] ))
Name |
---|
we need: how many numbers is less than or equal m and contains exactly [count] lucky digits. if state is DP[position][less][count] so cnt[k] = DP[0][false][k] were k is number of lucky digits.
we start from left to right and use digits that we can.
for example let m is 53237
we start from left:
if we choose [0 to 4] for first digit (leftmost digit), for next digits we are free to use all digits [0-9] because we are sure that all next numbers will be less than m. so we set [less] flag true. and answer is:
DP[position][less][count] = Sigma{ DP[position + 1][true][count — (if we use lucky digit ? 1 : 0)] } for all digits we can use
but if we choose 5 for first digit, for next digit we can only use [0-3] so [less] flag remains false. so answer is:
DP[position][less][count] = Sigma{ DP[position + 1][false][count — (if we use lucky digit ? 1 : 0)] } for all digits we can use
at the end if [position] == |m|:
DP[position][less][count] = (count == 0 ? 1 : 0)
sorry for poor English!
Thank you, Today is my lucky day getting reply's on all of my posts.