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

Автор xsc, история, 8 лет назад, По-русски

Уважаемые люди, помогите решить эту задачу http://codeforces.net/gym/101181/problem/D у меня 68-ом тесте ошибка. 68 ошибкаhttp://codeforces.net/gym/101181/submission/22695394 заранье спасибо!!!

UPD: AC 26-попытки!! очень интересная задачка, спасибо за автору.

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

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

Автокомментарий: текст был обновлен пользователем xsc (предыдущая версия, новая версия, сравнить).

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

Можешь пожалуйста объяснить как она решается?

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

    Решай сам. Алгоритм пересечения отрезков есть на е-максе. Зная его, найти расстояние, на которое нужно сдвинуть верхнюю ломаную, чтобы она соприкоснулась с нижней — совсем не rocket science. Посчитать количество точек касания — тоже. Разобрать вырожденный случай, когда ломаные касаются друг друга отрезками — это уже совсем упражнение на технику.

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

Главный не использовать double/float . вместо их использовал дробное число, структура 'ret'. А остальные очень легко, надо найти для всех из нижный и верхный точек расстояние из этого точка до противоположнего сторону озера. Взять минимум из них — это будет расстояние когда береги озера сопрекаснется. А чтобы вычислет количество надо учесть что некоторые отрезки противоположнего берега может целоком сопрекаснется.