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 | jiangly | 3898 |
2 | tourist | 3840 |
3 | orzdevinwang | 3706 |
4 | ksun48 | 3691 |
5 | jqdai0815 | 3682 |
6 | ecnerwala | 3525 |
7 | gamegame | 3477 |
8 | Benq | 3468 |
9 | Ormlis | 3381 |
10 | maroonrk | 3379 |
# | User | Contrib. |
---|---|---|
1 | cry | 168 |
2 | -is-this-fft- | 165 |
3 | Dominater069 | 161 |
4 | Um_nik | 159 |
4 | atcoder_official | 159 |
6 | djm03178 | 157 |
7 | adamant | 153 |
8 | luogu_official | 150 |
9 | awoo | 149 |
10 | TheScrasse | 146 |
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.