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

Автор AndreySiunov, 14 лет назад, По-русски

Предлагаю здесь обсуждать задачи.

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

»
14 лет назад, скрыть # |
Rev. 3  
Проголосовать: нравится 0 Проголосовать: не нравится

Задача A. Подскажите пожалуйста, в чём ошибка (WA5):

// код под спойлером

Общая идея: классическая задача отображения доски на всю плоскость; переберём все возможные доски, так, чтобы количество пересечений прямой (между первой точкой и отражением второй) с прямыми — границами доски было равно n. Ну и выберем из всем таких минимум.

»
14 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Задача B. Кто-нибудь ловил WA13? (вопрос решён, мой косяк)

Вроде всё норм делаю: вначале скалываю все разряды, потом пробегаю от младших к старшим и если текущий (i) и предыдущий (i-1) разряды больше 0, то увеличиваю следующий (i+1) разряд и уменьшаю текущий (i) и предыдущий (i-1), передвигаю текущий счётчик на 3 назад (на всякий случай), если текущая (i) ячейка больше 1, то уменьшаю её на два, следующую (i+1) ячейку увеличиваю на 1 и увеличиваю предпредыдущую (i-2) на 1, при этом если i=0, то не делаю увеличение (i-2) ячейки, а если i=1, то увеличиваю предыдущую (i-1) ячейку, и в этом случае тоже передвигаю на 3 назад на всякий случай, ну и конечно проверяю, чтобы i не стало равно 0 (всё, тут и понятно стало.. далее цикл идёт и увеличивает i на 1, пропуская случай, когда 0-ая ячейка стала равна 2).

»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

А почему так плохо порешали задачу D? Она же вроде простая совсем. Конечно набор задач и шраф у меня в результате совсем дурацкий получился. За упавшую B обидно.

  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +15 Проголосовать: не нравится

    Честно, не успел даже прочитать. Условие показалось мутным с этими действительными числами.

  • »
    »
    14 лет назад, скрыть # ^ |
     
    Проголосовать: нравится 0 Проголосовать: не нравится

    А как решалась, расскажи пожалуйста.

    • »
      »
      »
      14 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится

      Оптимально, наверное, толпой одного бить, а неоптимально — бить почти до конца и перед последним выстрелом переключаться на другого. Конечно, из-за большого количества вложенных тестов просто так не смоделируешь...

    • »
      »
      »
      14 лет назад, скрыть # ^ |
      Rev. 4  
      Проголосовать: нравится +5 Проголосовать: не нравится
      1. Забить на вещественные числа. Чтобы убить нуба надо 27 выстрелов, чтобы убить крутого — 4. Стреляют они раз в 107 и 41 секунд соответственно. Про время полета — вообще какой-то треш. Просто считаем, что если стреляют одновременно, то оба успевают выстрелить.
      2. Храним суммарное HP.
      3. Из оптимальности-неоптимальности крутых осталось min(HPA,A), нубов осталось .
      4. Тупо моделируем. Кто сейчас стреляет считается, зная количества. Это работает явно не хуже, чем 4·109, причем очевидно, что оценка жестко не достигается, потому что если у обоих много XP, то они быстро дохнут.
»
14 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

E. Fleet of Byteland

Что-то совсем не могу найти баг в своем решении. Есть у кого идеи?

И такой вопрос — кто как обходил то, что 2 * k не влазит в unsigned long long или такого теста не было?