nq1s788

Русская рулетка

Nov 2nd, 2025 (edited)
106
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.44 KB | None | 0 0
  1. Разберёмся с задачей сперва в случае чётного n. Очевидно, что при k = 1 ставить патрон нужно в крайнюю правую позицию, то есть, например, при n = 8 ответ будет выглядеть так:
  2.  
  3. .......X
  4.  
  5. Оценим вероятность застрелиться в этой ситуации. Напишем нули у тех слотов барабана, которые приведут нас к поражению, а у победных напишем единицы:
  6.  
  7. 10101010
  8.  
  9. Отсюда понятно, что каждый следующий патрон нужно ставить так, чтобы не снижать вероятность собственной победы до тех пор, пока это возможно. Когда все слоты, ведущие к поражению, будут заполнены патронами, останется только получать лексикографически наименьший ответ с ростом k. Рассмотрим ответы для всех остальных k при n = 8:
  10.  
  11. .....X.X
  12. ...X.X.X
  13. .X.X.X.X
  14. .X.X.XXX
  15. .X.XXXXX
  16. .XXXXXXX
  17. XXXXXXXX
  18.  
  19. В случае нечётного n рассуждения будут немного иными в начале, давайте построим ответ для n = 9 и k = 1:
  20.  
  21. ........X
  22. 010101010
  23.  
  24. Можно поставить патрон аналогично чётному случаю, как описано выше. А можно поступить иначе — зарядить первый слот и сдвинуть барабан влево, смотрим:
  25.  
  26. X.......X => .......XX
  27. 010101010 101010100
  28.  
  29. Очевидно, что вероятность не изменилась, а ответ улучшился. Дальше придётся заряжать револьвер так, как описано для чётного случая:
  30.  
  31. .....X.XX
  32. ...X.X.XX
  33. .X.X.X.XX
  34. .X.X.XXXX
  35. .X.XXXXXX
  36. .XXXXXXXX
  37. XXXXXXXXX
  38.  
  39. Разобравшись в принципе заполнения барабана патронами не должно составить труда научиться с помощью нескольких условий быстро отвечать на требуемые запросы.
  40.  
  41.  
  42. Сложность алгоритма — O(p).
Advertisement
Add Comment
Please, Sign In to add comment