Differences between revisions 1 and 4 (spanning 3 versions)
Revision 1 as of 2021-01-10 00:20:23
Size: 1477
Editor: FrBrGeorge
Comment:
Revision 4 as of 2021-01-13 01:16:39
Size: 3668
Editor: FrBrGeorge
Comment:
Deletions are marked like this. Additions are marked like this.
Line 3: Line 3:
Будем говорить, что для наблюдателя лес является дремучим, если из своего текущего положения наблюдатель видит только деревья. Вам дана карта леса и координаты точки, в которой находится наблюдатель. Будем говорить, что для наблюдателя лес является дремучим, если из своего текущего положения наблюдатель видит только деревья. Если набюлюдатель между деревьями видит просвет — лес не дремучий. Вам дана карта леса и координаты точки, в которой находится наблюдатель.
Line 13: Line 13:
'''TODO'''
Line 15: Line 15:
(587, 597, 100), (361, 239, 103), (320, 543, 114), (845, 296, 117), (260, 335, 93), (228, 616, 117), (119, 128, 107), (121, 640, 85), (575, 261, 87), (640, 581, 100), (448, 361, 99), (254, 579, 115), (718, 257, 114), (441, 653, 114), (450, 588, 94), (222, 619, 119), (647, 668, 78), (686, 422, 85), (249, 446, 104), (746, 219, 80)
577, 441
Line 18: Line 20:
YES
}}}

Пример не дремучего леса:

{{{
(607, 250, 31), (579, 469, 32), (606, 270, 19), (172, 319, 24), (128, 159, 28), (244, 110, 29), (616, 374, 37), (470, 173, 44), (468, 658, 25), (648, 652, 38), (811, 212, 20), (284, 579, 8), (910, 452, 42), (242, 361, 26), (70, 654, 37), (173, 329, 26), (206, 536, 11), (208, 620, 50), (352, 83, 6), (543, 498, 9), (949, 663, 49), (452, 273, 50), (84, 71, 22), (692, 688, 25), (67, 269, 10), (586, 118, 8), (558, 488, 42), (611, 149, 11), (982, 494, 24), (61, 660, 6), (543, 167, 43), (695, 152, 11), (830, 473, 42), (427, 89, 42), (207, 413, 31), (466, 736, 15), (639, 475, 28), (357, 699, 41), (347, 650, 26), (747, 111, 27)
448, 422
}}}

{{{
NO
}}}

Спойлер: эту задачу можно решать многочисленными способами, для меня самый простой оказался такой:
{{{#!wiki comment
 * Строим из точки наблюдения лучи-касательные ко всем окружностям (по две штуки)
 * Проверяем, пересекаются ли эти касательные с другими окружностями
 * Если хотя бы один не пересекается — с одной стороны у него дерево, а с другой — ''просвет''. Лес не дремучий.
 * Обратное тоже верно: если просвет есть, он ограничивается именно такими касательными, следовательно, если любая касательная пересекает ещё какую-нидудь окружность, лес дремучий.

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

  • На карте леса все деревья изображаются кругами и задаются координатами центра и радиусом
  • При этом в лесу бывают сросшиеся деревья (изображения таких деревьев на карте пересекаются),
  • Одно дерево может находиться внутри другого.
  • Точка, в которой стоит наблюдатель, не лежит внутри или на границе ни одного из деревьев.
  • Требуется определить, кажется ли лес дремучим данному наблюдателю.
    • Ввод:
      1. строка вида (x0, y0, радиус0), (x1, y1, радиус1), … — карта леса

      2. строка вида x, y — координаты наблюдателя

    • Вывод: YES (дремучий лес) или NO (не дремучий)

(587, 597, 100), (361, 239, 103), (320, 543, 114), (845, 296, 117), (260, 335, 93), (228, 616, 117), (119, 128, 107), (121, 640, 85), (575, 261, 87), (640, 581, 100), (448, 361, 99), (254, 579, 115), (718, 257, 114), (441, 653, 114), (450, 588, 94), (222, 619, 119), (647, 668, 78), (686, 422, 85), (249, 446, 104), (746, 219, 80)
577, 441

YES

Пример не дремучего леса:

(607, 250, 31), (579, 469, 32), (606, 270, 19), (172, 319, 24), (128, 159, 28), (244, 110, 29), (616, 374, 37), (470, 173, 44), (468, 658, 25), (648, 652, 38), (811, 212, 20), (284, 579, 8), (910, 452, 42), (242, 361, 26), (70, 654, 37), (173, 329, 26), (206, 536, 11), (208, 620, 50), (352, 83, 6), (543, 498, 9), (949, 663, 49), (452, 273, 50), (84, 71, 22), (692, 688, 25), (67, 269, 10), (586, 118, 8), (558, 488, 42), (611, 149, 11), (982, 494, 24), (61, 660, 6), (543, 167, 43), (695, 152, 11), (830, 473, 42), (427, 89, 42), (207, 413, 31), (466, 736, 15), (639, 475, 28), (357, 699, 41), (347, 650, 26), (747, 111, 27)
448, 422

NO

Спойлер: эту задачу можно решать многочисленными способами, для меня самый простой оказался такой:


CategoryHomework

LecturesCMC/PythonIntro2020/Homework_DeepWood (last edited 2021-01-13 01:16:39 by FrBrGeorge)