- •Содержание
- •В ожидании Нового года Условие
- •Золотые яйца Условие
- •Отгадай слово Условие
- •Формат входного файла
- •Формат выходного файла
- •Ограничения
- •Примеры тестов
- •Инкубатор Бабы Яги Условие
- •Расписные салфеточки Условие
- •Сколько прошло дней? Условие
- •Арифметическая прогрессия Условие
- •Нарезка фантиков Условие
- •Шагающий циркуль Условие
- •Волшебные горшочки Бабы Яги Условие
- •Стиральный вопрос
- •Чудик в Цветландии Условие
- •Столовая Условие
- •Рейтинг студента Условие
- •Формат входного файла
- •Формат выходного файла
- •Ограничения
- •Примеры тестов
- •Лена и зеркало
- •Макет города Условие
- •Мосты-горки Условие
Лена и зеркало
Л
ена
любит смотреть в зеркало. Она любит не
только смотреть на своё отражение, но
и изучать законы оптики, наблюдая за
ходом световых лучей.
Так как Солнце находится на достаточно большом расстоянии от Земли, при расчётах часто считают Солнце бесконечно удалённой точкой. В этом случае световые лучи, испускаемые Солнцем, считают параллельными друг другу.
В определённый день и в определённый момент времени Солнце находится в определённом месте. Соответственно, солнечные лучи падают туда, где находится Лена, под определённым углом. Лена, в свою очередь, может наклонять зеркало под разными углами.
Пусть зеркало наклонено так, что в некоторой системе координат его можно задать как прямую, имеющую уравнение y = kx + b. Направление падения солнечных лучей задаётся единичным вектором a.
Требуется найти направление отражения лучей, а именно, требуется найти единичный вектор c.
Примечание. По законам оптики, свет отражается так, что угол падения равен углу отражения (α = β на рисунке).
Формат входного файла
Входной файл содержит три вещественных числа k x1 y1 — угловой коэффициент прямой и координаты вектора a.
Длина вектора a приближённо равна 1.
Формат выходного файла
Выходной файл должен содержать два вещественных числа x2 y2 — координаты вектора c.
Длина вектора c должна быть приближённо равна 1.
Координаты вектора c должны быть выведены с точностью до 3-х знаков после запятой.
Ограничения
−1000 ≤ k ≤ 1000
Примеры тестов
-
№
Входной файл
Выходной файл
1
0 0.7071067812 -0.7071067812
0.7071067812 0.7071067812
2
1 1 0
0 1
Разбор
Пусть l — единичный направляющий вектор прямой, n — единичный вектор нормали к прямой. Эти векторы перпендикулярны друг другу.
Рассмотрим базис, состоящий из векторов l и n. Разложим вектор a по этому базису: a = Nn + Ll.
Тогда вектор c можно найти по формуле: c = −Nn + Ll = 2 Ll − a.
Так как базис {n, l} ортогональный (т.е. векторы базиса перпендикулярны друг другу) и векторы базиса единичные, координату L можно найти по формуле: L = a · l.
Следовательно, c = 2(a · l)l − a.
Найдём направляющий вектор. Выберем на
прямой две точки: A(0, b) и B(1, k + b).
Тогда в качестве направляющего вектора
можно взять вектор AB{1, k}.
Единичный направляющий вектор:
.
program mirror;
var
k, x1, y1: extended;
len: extended;
xl, yl: extended;
sc: extended;
x2, y2: extended;
begin
assign(input, 'input.txt');
reset(input);
assign(output, 'output.txt');
rewrite(output);
read(k, x1, y1);
len := sqrt(sqr(x1) + sqr(y1));
xl := 1/sqrt(sqr(k)+1);
yl := k/sqrt(sqr(k)+1);
sc := x1*xl + y1*yl;
x2 := 2*sc*xl - x1;
y2 := 2*sc*yl - y1;
write(x2:0:5, ' ', y2:0:5);
close(input);
close(output);
end.
Макет города Условие
У Пети на столе стоит макет центральной части города. Макет представляет собой N зданий в форме прямоугольных параллелепипедов, расположенных на плоской поверхности. Здания могут вплотную соприкасаться стенками.
Петя хочет оклеить верхние и боковые грани всех зданий цветной бумагой. Он решил заранее вычислить, сколько бумаги ему потребуется, учитывая, что соприкасающиеся части стенок можно не оклеивать.
Требуется написать программу, которая принимает на вход информацию о макете (для каждого здания известны его высота и координаты основания) и выводит искомую площадь бумаги.
Формат входного файла
Входной файл содержит целое число N — количество зданий.
Далее следуют N пятёрок целых чисел: xi yi ui vi hi, где (xi, yi) и (ui, vi) — координаты двух противоположных углов основания здания в сантиметрах, hi — высота здания в сантиметрах.
Основания зданий представляют собой прямоугольники со сторонами, параллельными осям координат.
Формат выходного файла
Выходной файл должен содержать целое число S — искомую площадь в квадратных сантиметрах.
Ограничения
1 ≤ N ≤ 105
0 ≤ xi < ui ≤ 10000
0 ≤ yi < vi ≤ 10000
0 < hi ≤ 100
Сумма площадей верхних и боковых граней всех зданий без учёта соприкасающихся частей не превосходит 109.
Примеры тестов
-
№
Входной файл
Выходной файл
1
1
0 5 5 7 3
52
2
2
0 5 5 7 3
3 2 6 5 4
97
Разбор
Площадь бумаги можно вычислить по формуле:
,
г
де
Si
— площадь поверхности i-го
здания (сумма площадей верхней грани и
боковых граней), Sij
— площадь соприкосновения i-го
и j-го зданий.
Si можно вычислить по формуле:
.
Sij можно вычислить по формуле:
,
г
де
lij
— длина пересечения оснований i-го
и j-го зданий:
,
т.е. можно рассматривать отдельно пересечение вертикальных и горизонтальных сторон прямоугольников.
Если, например, vi = yj
(см. рис.), то прямоугольники могут
пересекаться по горизонтальному отрезку,
тогда
,
равняется длине пересечения отрезков
[xi, ui]
и [xj, uj].
Таким образом, для вычисления искомой площади цветной бумаги необходимо перебрать все пары прямоугольников, для которых vi = yj или ui = xj, и вычислить для этих прямоугольников lij.
