Блог пользователя techaddict

Автор techaddict, 12 лет назад, По-английски

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] ))

  • Проголосовать: нравится
  • +3
  • Проголосовать: не нравится

»
12 лет назад, # |
Rev. 4   Проголосовать: нравится +6 Проголосовать: не нравится

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!