Цитата:
|
Сообщение от Trotil
Этап 1: Движение точки А вдоль прямой x=0.
|
Собственно законы движения на этом этапе выводить совсем необязательно. Достаточно рассмотреть конечное положение этого этапа.
Для точки А: X_a=0, Y_a=и
Для точки D: X_d=sqrt(y^2-Y_a^2), Y_d=0
Для следующего этапа нам потребуется точка B и зависимость ее от точки А.
Уравнение прямой через A и B:
(y-Y_a)/(Y_b-Y_a)=(x-x_a)/(x_b-x_a) (1)
y-Y_a=(x-X_a)(((Y_b-Y_a)/(x_b-x_a))
Поскольку АВ перпендикулярно АD, то
(Y_b-Y_a)/(x_b-x_a)=(X_d-X_a)/(Y_d-Y_a)
Подставляем в (1) - получили уравние прямой, выраженное через координаты точки А.
Можно переходить к этапу 2. Этап самый труоемкий, решение будет дописано позже.
(14:59)
Цитата:
|
Сообщение от EvroStandart
Я сам немного не точно понял. Наоборот: коридор не может быть типа "Т". То есть, это не два коридора, а один поворачивающий на 90 градусов. Он делится на два по ширине. До и после поворота ширина коридора отличается. Каждый коридор шире чем пианино.
Нужно не вычислять движение, а найти ответ: пролезет или нет.
А вот без перебора наверно никак....
|

О! Задача упрощается! Теперь этап 2 совсем не нужен - а он самый трудный в расчетах был. Перебор - это конечно хорошо - но долго(понятие конечно относительное). Задача ведь олимпиадная - скорость тоже важна! Можно ведь вывести формулу - а потом просто подсчитать, и все.
Скоро выдам исправленную версию.
Исправленная версия
Итак, если если вы читали, что написано ранее, то это вам покажется сущим пустяком!
Упрощения в связи с новым условием:
X_a(t)=0 - для любого t
Точка A: (0, Y_a)
Точка D: (x_d, 0)
x_d=sqrt(y^2-Y_a^2)
Отсюда в качестве переменной достаточно взять Y_a и Еще нам понадобится Y_с. Ее можно вычислить так:
Y_c^2+(X_d-X_с)^2= BD^2=x^2+y^2 (1)
Из другого треугольника:
(x+y)^2=(X_d+X_c)^2+Y_c^2
Из этих уравнений можно получить, что X_c=xy/2*x_d
Подставляя X_с в любое уравнение, можно получить Y_с.
Уравнение прямой, проходящее через A и D:
(y-Y_a)/(Y_d-Y_a)=(x-x_a)/(x_d-x_a)
(y-Y_a)/(-Y_a)=(x)/(x_d)
y=((-Y_a)/(x_d))(x)+Y_a (2)
Уравнение прямой через В и С:
эта прямая параллельна прямой АD => выразим через (2) и (Y_c)
y2=((-Y_a)/(x_d))(x)+Y_a
+ 2(Y_c - y_a) (3)
Вот почти и все. у2(a - ширина коридора) - это есть расстояние от нижней стенки до стороны ВС на уровне точки Q (угла стенки). Осталось исследовать эту функцию на max. (пределы исследования: Y_a=y до Y_a=0 - конец маневра)
В программе полученный результат сравнивается с другой шириной коридора) - и программа выдает нужный ответ... Исследование функции на экстремумы проходили в школе, я надеюсь?
PS1: Проверьте вычисления, может где-то ошибка закралась...
PS2: Записывать окончательную формулу в приведенном виде не стал - в режиме текстовой строки прочитать ее довольно трудно. Но здесь просто надо поставить одни формулы в другую и получить искомую формулу...