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

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

Странно, что никто еще не написал (С) AlexErofeev


Давайте обсудим здесь, собственно, интернет-тур сей олимпиады

UPD упс, заметил запись о всесибе постарше, ну да ладно, там вроде особо нет обсуждения пока
  • Проголосовать: нравится
  • 0
  • Проголосовать: не нравится

15 лет назад, скрыть # |
 
Проголосовать: нравится +12 Проголосовать: не нравится
Никто не знает, когда разморозят монитор?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
в задаче В могли быть 2 одинаковых по цвету соседних участка?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Как решать 5-ую?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +10 Проголосовать: не нравится
    Для соответствия 1-му критерию (чтобы все напряжения известны стали) надо, чтобы граф составленный из ребер между узлами.
    Для соответствия 2-му критерию, чтобы для каждого из проведенного измерения (u, v) было по 3 различных пути в графе.
    Для первого критерия: просто найти первое ребро, после которого все становится связным.
    Для второго: бинпоиск и для каждого из M измерений запускать макс поток, но только не более, чем на 3 итерации. Сложность будет N * M * log(M)
15 лет назад, скрыть # |
 
Проголосовать: нравится +11 Проголосовать: не нравится
Странно, что никто еще не написал (С) AlexErofeev

Кто-нибудь может объяснить, почему решения 5 и 8, которые заходят под mingw падают под visual C++? (tl34 и wa2 соответственно)
15 лет назад, скрыть # |
Rev. 2  
Проголосовать: нравится 0 Проголосовать: не нравится

Вопрос по B 2. Верна ли следующая эвристика?
Как-только вступили на оранжевый участок, ускоряемся по нему до конца. Как-то только вступаем на синий, немедленно прыгаем и летим до ближайшего оранжевого участка. Если оранжевых нет, то до ближайшего синего и снова прыгаем.

Закодить просто не успел.

15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
кто-нибудь знает, дорешка сих задач где-то будет?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Да, организаторы написали, что дорешивание будет в тренировках.
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Заходило ли в задаче 8 решение в вещественных числах? И если да, то в 64- или в 128-разрядных?
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    Обычные даблы заходят. А как ее в целых решать?
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Мда, а мы много времени потратили на длинную арифметику, потому и не сдали...
      Имеется в виду, что рациональные дроби нужны только для проверки, что точка лежит на кривой. Ибо мы ведь не можем навскидку сказать, насколько близко кривая, заданная тремя целочисленными точками, может проходить от другой целочисленной точки. Но, видимо, либо не слишком близко, либо тесты дырявые. Скорее первое.
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +13 Проголосовать: не нравится
    я вам больше скажу, самый простой способ - использовать java.awt.geom там есть все нужные функции для работы с такими кривыми, именно так задача легко была сдана с плюса на 95 минуте
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
у всех решение 10-й - запиханная Дейкстра?
15 лет назад, скрыть # |
 
Проголосовать: нравится +5 Проголосовать: не нравится
Как решать 7ю?
  • 15 лет назад, скрыть # ^ |
    Rev. 5  
    Проголосовать: нравится +4 Проголосовать: не нравится

    Ну понятно, что пока шарф не окажется на касательной к дереву, Остап бежит по окружности, это считаем отдельно.

    Далее веселая спираль.

    В любой маленький отрезок времени dt он бежит по дуге окружности. За это время шарф проворачивается на угол d(alpha).

    Угол шарфа - полярный угол вектора из начала шарфа в конец шарфа.
    Он изменяется на d(alpha) за промежуток времени dt, при этом Остап пробегает расстояние L*d(alpha). Мы можем найти, с какого полярного угла шарф начала движение, и каким углом закончил, это несложно (upd: можем, но, конечно, не надо).
    Остается проинтегрировать по углу
    integral(alpha1 to alpha2) (L(alpha)*d(alpha))
    L(alpha) линейно убывает от L0 до 0

    поэтому ответ - (alpha2-alpha1)*L0/2.

    Наверное есть более изящное объяснение такой простой формулы.

    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      Спасибо!
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +8 Проголосовать: не нравится
      Несложно понять, что alpha2 - alpha1 = L0/r
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится +4 Проголосовать: не нравится
          Проще, наверное, так (в общих чертах):
      Пишем положение конца шарфа через угол, учитывая укорочение этого шарфа с увеличением угла. Далее дифференцируем эти x и y по углу (там много что сокращается), берем сумму квадратов и ее интегрируем (под интегралом - линейная функция). А вообще-то я сам был немало удивлен, когда после численного  интегрирования при написании решения примерно неделю тому назад (сначала предполагал, что потребуется preculc и интерполяция)  совершенно случайно обнаружил, что ответ описывается простой  формулой l*l/(2*r). Так что задача совершенно случайно превратилась из одного жанра (численные методы) в немного другой - математический анализ.        
    • 15 лет назад, скрыть # ^ |
       
      Проголосовать: нравится 0 Проголосовать: не нравится
      а как-нить без интегрирования можно длину спирали находить?
      • 15 лет назад, скрыть # ^ |
         
        Проголосовать: нравится +8 Проголосовать: не нравится
           Отвечу вопросом на вопрос : а как вообще можно находить длину кривой без интегрирования? Объяснить, может быть и получится, но реально все равно это сведется, скорее всего, к тому же интегрированию. Да и зачем изобретать велосипед? Интегрирование - вещь нехитрая, и проще, по-моему ее применить, чем изобретать что-то хитрое. Не очевидно было только одно - что подынтегральная функция будет такая простая, и поэтому интеграл от нее берется по формуле, безо всякого численного интегрирования.   
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится -9 Проголосовать: не нравится
          В данном случае можно было обойтись без углов и интегрирования, если считать, что путь Остапа состоит из отрезков длиной dx, перпендикулярных к касательной. Тогда просто показать (ничего, кроме теоремы Пифагора) , что при передвижении на dx, L^2 уменьшается на 2*r*dx+(dx)^2. Второе слагаемое игнорируем, отсюда ответ L0^2 / (2*r).
          Гена так решил.
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +30 Проголосовать: не нравится
            А вам не кажется, что вы сделали тоже самое, не сказав слово "проинтегрируем"?
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится +21 Проголосовать: не нравится
              ------------------------------------------------------------------------------
              Ага, именно так. Весьма популярный приём на школьных олимпиадах по физике, кстати. В 9-10 классе такая задача уже может встретиться, а производной по программе ещё нет. Поэтому, кстати, задача может оказаться нетривиальной и даже интересной(!)
          • 15 лет назад, скрыть # ^ |
             
            Проголосовать: нравится +11 Проголосовать: не нравится
                Все это то же самое, что и банальное исчисление бесконечно малых - то же самое дифференциальное и интегральное исчисление. Идея Гены ровно в том, что геометрическую часть он немного упростил, обойдясь без параметризации пути. Но это весьма несложный раздел математического анализа - его проходят даже в весьма отсталых технических ВУЗах.  
            • 15 лет назад, скрыть # ^ |
               
              Проголосовать: нравится +8 Проголосовать: не нравится
              Я понимаю, что здесь предел суммы, и это тоже самое. Но так можно решить задачу, даже не зная, что такое определенный интеграл, первообразная и т.п.
              Причем геометрическая часть, действительно, становится совершенно тривиальной.
              • 15 лет назад, скрыть # ^ |
                 
                Проголосовать: нравится 0 Проголосовать: не нравится
                  Вся дискуссия сводится опять-таки ровно к проблеме, как следует решать абстрактную задачу - неважно из какой области - пытаться применить какой-либо мощный аппарат  или что-либо этакое красивое засобачить. Красивее, конечно, второе, но вот обычно получается, да и думать приходится меньше (не факт, что это лучше) при первом подходе к решению  проблемы.
                Да и вряд ли кто-нибудь решил эту задачу из числа тех тех, кто еще не знает интегрирование.      
                • 15 лет назад, скрыть # ^ |
                   
                  Проголосовать: нравится +1 Проголосовать: не нравится
                  =====================================
                  Да нет тут никакой дискуссии.
                  Меня самого заинтересовала эта задача, и я попытался вывести подинтегральную функцию для движения Остапа по дуге. Увидел, что все становится очень громоздко и плюнул. У Вас, как я понимаю, это тоже было непросто, если изначально предполагалось численное интегрирование.

                  А здесь я просто озвучил красивую, по-моему мнению, идею.
        • 15 лет назад, скрыть # ^ |
           
          Проголосовать: нравится 0 Проголосовать: не нравится
          Судя по ограничениям (100000 тестов в одном инпуте) я сразу понял, что есть closed-form solution. При меньших может быть и не догадался бы =)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится

Вопрос по задаче №5. Мы пробовали решать так:

1) Первый критерий: ответ первое ребро при котором граф стал связен. Если такого нет - ответ на задачу "-1 -1"

2) Второй критерий. Переберем бинарным поиском ответ. Пускай мы рассматриваем некоторые mid ребер. Добавляем их в сеть. Теперь пускаем поток от первой вершины ко всем остальным(по очереди, каждый раз добавляя ребра по новой). Если хотя бы для одного стока поток меньше 3, наш текущий mid нас не устривает. Сложность выходит порядка (N*N*sqrt(M)*logM).

Я ожидал вердикт ТЛ, но мы получали ВА тест 7. Кто-то может обьяснить почему?

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

а кто из школьников занял место выше 71го?

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

Заставило во время контеста понервничать:

Задача 6.

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

Кто-нибудь объяснит мне, как это надо интерпретировать, чтобы получить верное решение?

По-моему, в семпл тесте, например, лестницы длины 2 может быть и хватит, так как Федор может сидеть на скале высотой 2 - самой левой.

Мы сдали ее забив на условие и угадав решение по семпл-тесту.

  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    В условии же написано: "служитель культа в панике забирается на самую высокую скалу, находящуюся на расстоянии не более R от места битвы с титаном мысли"
  • 15 лет назад, скрыть # ^ |
     
    Проголосовать: нравится +5 Проголосовать: не нравится
    А это как раз тот случай, когда не надо пропускать пролог:
    "После недолгой стычки с особой, приближенной к императору, как мы знаем, служитель культа в панике забирается на самую высокую скалу, находящуюся на расстоянии не более R от места битвы с титаном мысли"
    Из всех скал, удовлетворяющих этому критерию в инпуте, самая низкая - 6, а не два. Интересно, как вы ухитрились сдать задачу, не поняв этого условия. Есть еще таланты на Руси =)
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
(я тоже долго не мог понять) но, ведь Федор залазит на самую высокую скалу, то есть надо для всех мест встречи найти гору с максимальной высотой (то есть на отрезке [li - r; li + r]), допустим нашли, тогда минимальный допустимый ответ, это будет минимум из всех величин, т.к. если пожарникам повезет, он залезет на самую низкую из этих гор.... а а достаточный, очевидно, будет максимум из всех величин, т.к. в худшем случае он залезет именно на самую высокую гору, надеюсь ты меня понял
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
а где будет открыто дорешивание и можно ли писать виртуальные контесты на этом сайте?
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
Сталкивался ли кто нибудь с ва8 по 8 задаче? Хотелось бы узнать в чем там может быть проблема
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
кто-нибудь сталкивался с WA10 в задаче2 (прыжки), и WA6 в задаче 8(про кривые Безье) ? очень интересно :)  
15 лет назад, скрыть # |
 
Проголосовать: нравится 0 Проголосовать: не нравится
 x(t)=cos(t)*r-sin(t)*(l-r*t)    ;    y(t)=sin(t)*r+cos(t)*(l-r*t);     x'=-sin(t)*r+sin(t)*r-(l-r*t)*cos(t);

y'=cos(t)*r-cos(t)*r-(l-r*t)*sin(t);    sqrt(x'^2+y'^2)=(l-r*t)(cos^2(t)+sin^2(t));    Интегрируем, пока функция >0,

получаем ответ l*l/(2*r).