LINUX.ORG.RU

Ещё одна задачка из школьной олимпиады


0

0

Есть коридор поворачивающий под углом 90 градусов с разной шириной (a и b).

_______
| _____   a - ширина коридора
| |
| |

 b - ширина коридора

Надо протащить через этот коридор рояль сферической^W прямоугольной формы с габаритами h*w.

Задача: по данным - a,b,h,w определить возможность прохождения рояля через коридор (т. е. написать программу определяющую это).

>рояль прямоугольной формы

Можно протащить узкий но длинный рояль. :)


Ты вообще рояль видел? Ну я понимаю был бы ящик или шкаф - но почему прямоугольный рояль? Да ещё и местами узкий и длинный, а?

justuser ★★
()

диагональ прямоугольника, полученного в месте пересечения корридоров, и расстояние от его срелней точки до внутреннего угла разве не решают задачу?

pseudo-cat ★★★
()

когда по a и b проходит без поворота - всё ясно, когда не проходит по обоим параметрами - тоже ясно. осталось рассмотреть случай, когда по одно параметру проходит, а по второму нет.

в последнем случае прямоугольник может проходить только при помощи разворота, и надо узнать что его можно повернуть. на самом деле тут задача на экстремумы и геометрию, что сложно, но поскольку интуитивно ясно, что экстремальным условием прохождения будет возможность поместить прямоугольник под 45 градусов на повороте, то всё не так сложно.

например, угол поворота фиксирован, координаты углов «коридора» тоже. одну координату одно точки (пусть K) фиксируем (пусть X) чтобы точно сопоставить угол с «внешней стеной»(известна одна координата X1). вторую (Y) ищем из системы двух уравнений, где вторым неизвестным будут длинна от внутреннего угла прохода до вершины прямоугольника. Наглядно: рассматриваем Г-образный кусок периметра от внутреннего угла коридора до фиксированной вершины, также в уравнение войдёт длина стороны, пусть это a. Теперь из известной длинны другой стороны (b) и найденной координаты точки K, ищем координату Y (X-известна) точки, которая соединена стороной b c K. Теперь просто сравниваем Y с известным параметром коридора Y1.

уравнения писать без бумаги лень, что-то и так заебался буковки выписывать(так что может где-то наврал). Что, реально кто-то в школе подобной лажей занимается?

anonymous
()
Ответ на: комментарий от anonymous

>одно точки

одной точки прямоугольника

anonymous
()
Ответ на: комментарий от anonymous

да, забыл пояснить, что X=X1 по построению.

anonymous
()

рояль сферической^W прямоугольной формы

Этот бред решайте со своими учителями в классе рояля сферической прямоугольной формы.

konstantinjch
()
Ответ на: комментарий от anonymous

> поскольку интуитивно ясно, что экстремальным условием прохождения будет возможность поместить прямоугольник под 45 градусов на повороте, то всё не так сложно.

это так если a == b. Если нет, то под другим углом «узкое место».

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Зачем под 45? Если предположить рояль, в форме рояля, а не квадратного трёхчлена, попавшего в узкий корридор шириной = а, то его смело можно тащить до угла, положить на бок, т.е. поднять заднюю часть(лежачий сапог поставить)... дальше скучно.

konstantinjch
()

А зачем его поворачивать?

?

ansky ★★★★★
()

Все, кто тут пытаются острить — обычные ниасиляторы косинусов.

mclaudt
()
Ответ на: комментарий от dimon555

Что ты такое написал?

h^2 = a^2 + b^2

(ab)/2 = (wh)/2

Из первого уравнения следует что при фиксированных параметрах коридора предельная допустимая длина определяется однозначно, а из наглядной очевидности это тут же опровергается.

У меня наспех вышло уравнение шестой степени относительно синуса предельного угла и мне это не нравится.

Было бы интересно подойти к задаче с точки зрения оценки максимальной степени уравнений из каких-то фундаментальных соображений.

Кажется что задача слишком проста чтобы возникали аж шестые степени...

Хотя трактриса казалось бы куда проще а она вообще трансцендентна.

mclaudt
()
Ответ на: комментарий от dilmah

>Если нет, то под другим углом «узкое место».

тогда всё сложнее, намного сложнее. даже движение записывается не простым поворотом, а ещё и смещением. смешение при некотором угле будет выражаться функцией, в которую войдут размеры коридора как параметры. тогда без бумаги и нудных расчётов саму функцию и экстремальное условие уже не найти. даже сразу не ясно, хватит ли школьной геометрии и обычных производных для решения последнего.

только причём тут программирование? это математика.

anonymous
()
Ответ на: комментарий от anonymous

>>только причём тут программирование? это математика.

Видимо, упомянутое уравнение предлагается решать численно.

mclaudt
()
Ответ на: комментарий от pseudo-cat

>ойли?

ну меня-то вышка есть, пусть и х-вая. а в школе таким заниматься - это писец.

anonymous
()
Ответ на: комментарий от mclaudt

>Видимо, упомянутое уравнение предлагается решать численно.

а найти его для начала?

anonymous
()
Ответ на: комментарий от mclaudt

Что ты такое написал?

я построил из угла две окружности радиуса a и b. И подумал, что ведь надо крайние точки должны двигаться по этим траекториям, хотя центр вращения смещается. пусть есть DEFG прямоугольник, пусть DE и FG длинные стороны(пусть это равно h). если из внутреннего угла продолжить до пересечения с противоположной стенкой, получатся две точки, там и надо DE расположить. если угол точка A, то получится треугольник DEA, стороны a,b,h. другую сторону находим из площади этого треугольника и прямоугольника, а скорее всего есть более простая формула. Картинку вышлю на почту, располагать её где-то лень




dimon555 ★★★★★
()
Ответ на: комментарий от ip1981

Это не совсем то, скорее совсем не то.

Касательно топика, то можно использовать вероятностный подход. В первом приближении, просто тестировать углы с определённым шагом, при повороте на которые прямоугольник поместится в проходе. Тогда будут в некоторых случаях даваться утвердительные результаты, но прямоугольник может застрять, что в реальной ситуации будет плохо. Нужно определённым образом «сжимать» проход на какую-то относительную величину( тоже нужно как-то посчитать), устраняя подобные ложные срабатывания при заданном шаге поворота( но отсекаются некоторые прямоугольники, проходящие «впритык», процент которых тоже бы желательно оценить).

Вроде бы, в общем аналитически подобные задачи решают вариационным исчислением. Если сюда попадает и этот случай, то решить задачу смогут очень немногие.

anonymous
()
Ответ на: комментарий от dimon555

>И подумал, что ведь надо крайние точки должны двигаться по этим траекториям, хотя центр вращения смещается.

тогда и траектории не будет, вернее будет, но другая. одной геометрией задача не решается.

anonymous
()
Ответ на: комментарий от anonymous

>тогда и траектории не будет, вернее будет, но другая. одной геометрией задача не решается.
да двигаться не должен(хотя это надо доказывать), но площадью не больше чем a*b иначе он туда не влезет

dimon555 ★★★★★
()
Ответ на: комментарий от anonymous

>короче, мне кажется что эта задача так и проситься на хабр.
к местной школоте, так она в основном трололо делает

dimon555 ★★★★★
()
Ответ на: комментарий от dimon555

Построение понял, только при фиксированных a,b оно дает некую фиксированную длину и ширину (не спорю, такое расположение действительно, как говорится, физически выделено, но совсем не очевидно что оно является самым трудным положением — можно только догадываться об этом, исходя из того что оно _единственное_ физически выделенное положение, а также того, что самое трудное положение должно быть как-то физически выделено).

Но ведь для фиксированных a,b можно выбрать и другие w и h. И никакого ответа для них такое построение не даёт.

mclaudt
()
Ответ на: комментарий от ip1981

Тру! С диваном силами ЛОРа всяко не решить :) А если еще добавить сложнозапутанный коридор (с полным перебором путей), то и подавно не решить

anonymous
()
Ответ на: комментарий от mclaudt

>Но ведь для фиксированных a,b можно выбрать и другие w и h.
то как бы максимальные w и h, все что меньше должны пролезть... или я чего-то не понимаю? ну можно ещё рассмотреть два прямоугольника, один с диагональю AE и вращается вокруг A, а другой с диагональю AD и тоже вращается вокруг A... а дальше не знаю :)

dimon555 ★★★★★
()
Ответ на: комментарий от mclaudt

>Но ведь для фиксированных a,b можно выбрать и другие w и h. И никакого ответа для них такое построение не даёт.

возможно диван может быть длиннее, но не толще и чтобы площадь сохранялась или была не больше, надо бы ещё подумать... вообще можно начать с отрезка не имеющего толщины.

dimon555 ★★★★★
()
Ответ на: комментарий от anonymous

> Вроде бы, в общем аналитически подобные задачи решают вариационным исчислением.

здесь нужно найти экстремум обычной функции. Его, действительно, может быть сложно или невозможно найти аналитически, но вариационное исчисление никак не сможет помочь в этом — вариационное исчисление всего лишь ищет экстремумы функций высшего порядка (функций от функций).

dilmah ★★★★★
()
Ответ на: комментарий от dilmah

Сейчас тебе начнут рассказывать, что функция есть частный случай функционала (функционал от функции-константы) ;)

mclaudt
()
Ответ на: комментарий от dimon555

Избранность положения, параллельного диагонали перекрестка, очевидна, и других избранных не наблюдается, а так как критическое положение притирки должно быть избранным, то положение, параллельное диагонали перекрёстка и будет критическим положением притирки.

mclaudt
()

Короче, ответ такой:

Не нарушая общности, будем считать, что a>b и h>w. Всегда начинаем пихать узким концом в широкий коридор, прижимаем к внешней стенке, не к острому углу.

Для любой комбинации a,b,h,w критическим расположением будет то, где высота h параллельна диагонали «перекрёстка». Обозначим её длину за h₀=√(a²+b²). Высоту образованного этой диагональю треугольника обозначим w₀=a⋅b/h₀. Аккуратно расписав геометрию, получаем ответ:

  • Если 0<h<2⋅h₀, то возможность прохода определяется выражением w<min(b, (2-h/h₀)⋅w₀);
  • Если h>2⋅h₀, то возможности пройти нет даже для бесконечно тонкого прута.

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

mclaudt
()
Ответ на: комментарий от dilmah

>здесь нужно найти экстремум обычной функции.

разве? для каждого прямоугольника и коридора будет своя функция «поворота» со своим экстремумом. и нужно найти функцию, значение которой при заданных входных данных в качестве аргументов есть экстремум соответствующей функции «поворота».

anonymous
()
Ответ на: комментарий от anonymous

> Что, реально кто-то в школе подобной лажей занимается?

Ну мы как-то тащили на второй этаж классную доску, которая оказалась длиннее лестничной площадки. Если б завхоз её в сердцах не погнул, так бы там и застряла.

question4 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.