<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94183</guid>
        <pubDate>Wed, 13 Nov 2002 09:23:03 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94183</link>
        <description><![CDATA[Kosha: А вот еще идея: Проверять, получившийся многоугольник самопересекающийся или нет. Думаю, можно это сделать быстрее. Проблема, как его замкнуть.]]></description>
        <author>Kosha</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94181</guid>
        <pubDate>Mon, 04 Nov 2002 16:15:50 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94181</link>
        <description><![CDATA[DEiL: мама моя. вы все извраты! =)<br><br>а ведь я знаааааааю эту задачу :))<br>и, между прочим, она была на городском туре олимпиады по программированию для _11-х_ классов (или для 10-х). как раз я её делал :)<br>и комп, на котором тестили прогу - целерон 400 =)))))<br>так что никаких наворотов в решении тут не нужно<br><br>я, помню, когда решал эту задачу, случайно подвесил свой комп. ну и решил подвесить ихний - не вышло :( так обидно было...<br>на самом деле задача несложная, но есть одно но - она должна работать на тестах с большим N, и если хранить координаты всех точек, занятых под стены, реально не хватает памяти!<br><br>я её решал так, как, по-моему, уже было предложено выше - <br>сделал массив из структур, где хранились координаты концов отрезков, образующих стены. а далее, когда ставится новая стена, проверял, не пересеклась ли она с одним из существующих. не помню точно, как я это делал. вродебы так -<br>если строим стену из n блоков и на север, то проверял, лежат ли точки x,y+i (0&lt;=i&lt;=n) на отрезках, которые записаны в массиве =)<br>]]></description>
        <author>DEiL</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94180</guid>
        <pubDate>Mon, 28 Oct 2002 20:36:55 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94180</link>
        <description><![CDATA[volatile: Ну не хотите хранить 1E9 точек карты Флатландии - разбейте её на области. По ходу строительства нумеруйте отрезки стены, а в описание области добавляйте факт - &quot;через облать проходит стена №S&quot;. Тогда проверять очередную стену нужно будет не со всеми отрезками, а только с теми, которые проходят через данную область.<br><br>Или по-другому: собираете по ходу строительства связный отсортированный список (скорее списки) отрезков. Думаю, понятно, что в отсортированном списке искать попроще будет?<br><br>По ходу, суть задачи в том, что строится список занятых точек пространства и нужно выяснить - занята ли уже данная точка или нет. Не циклитесь на отрезках - они не имеют значения.]]></description>
        <author>volatile</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94179</guid>
        <pubDate>Mon, 28 Oct 2002 17:21:00 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94179</link>
        <description><![CDATA[kenai: Кхе-кхе. Как оказалось, все гениальное просто.<br><br>Четыре массива, показывающих координаты нарисованных линий<br>begin_x[1000]<br>end_x[1000]<br>begin_y[1000]<br>end_y[1000]<br>+ переменная, показывающая, сколько нарисовано линий<br>Если строители находятся по X меньше конца(end_x) и больше начала(begin_x),<br>то если строители находятся по Y меньше конца(end_y) и больше начала(begin_y),<br>то точка найдена!<br>По моему вполне реально.]]></description>
        <author>kenai</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94178</guid>
        <pubDate>Mon, 28 Oct 2002 15:30:39 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94178</link>
        <description><![CDATA[Flex_Ferrum: На самом деле, подойдет. С некоторой модификацией.]]></description>
        <author>Flex_Ferrum</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94177</guid>
        <pubDate>Mon, 28 Oct 2002 15:25:58 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94177</link>
        <description><![CDATA[shadeofgray: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Flex_Ferrum, 28.10.02, 15:20:19</span><div class='quote '>Т. е. фактически хранится внешний контур стены (что суть многоугольник), а каждая следующая прямая проверятся на пересечение с ним.</div></div><br>а если стена идёт двойной спиралью? сначала скручивается к центру, потом раскручивается наружу? Такой способ не пройдёт.]]></description>
        <author>shadeofgray</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94176</guid>
        <pubDate>Mon, 28 Oct 2002 12:20:19 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94176</link>
        <description><![CDATA[Flex_Ferrum: Кстати, в общем случае запоминать места, где прошла стена, конечно, нельзя. ИМХО, такое решение достаточно топорно, и:<br>1) Памяти действительно может нехватить;<br>2) Алгоритм получается по крайнер мере двухпроходным, что не есть хорошо.<br>Вообще задачка мне напоминает задачку отсечения невидимых линий и поверхностей. А в этой области есть один замечательный алгоритм - называется алгоритм плавающих горизонтов. Обычно их берется два - для максимума и минимума по z-координате. В данном случае их должно быть 4. Т. е. фактически хранится внешний контур стены (что суть многоугольник), а каждая следующая прямая проверятся на пересечение с ним.]]></description>
        <author>Flex_Ferrum</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94175</guid>
        <pubDate>Mon, 28 Oct 2002 10:55:50 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94175</link>
        <description><![CDATA[shadeofgray: <div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <span class='tag-quote__quote-info'>Faust, 28.10.02, 07:31:11</span><div class='quote '>Боже мой, что творится!<br>А что - просто посмотреть - есть ли перед тобой стена или нет - так нельзя?</div></div><br>а как смотреть? Это в реале достаточно глянуть (некоторым) и станет ясно, есть стена или нет. <br>Тут длина стены может достигать 10^6 единиц - создать матрицу и помечать в ней клеточки, через которые стена идёт памяти не хватит. Единственный приемлимый вариант - смотреть, не пересеклась ли новая стена с одной из построенных раньше. А это только через пересечение прямых.<br><br>P.S. Если я не прав и есть более быстрый способ - плиз, идею в студию.<br>]]></description>
        <author>shadeofgray</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94174</guid>
        <pubDate>Mon, 28 Oct 2002 04:31:11 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94174</link>
        <description><![CDATA[volatile: Боже мой, что творится!<br>Какой пересечение прямых? Какие уравнения? Какие полярные координаты?<br>А что - просто посмотреть - есть ли перед тобой стена или нет - так нельзя?]]></description>
        <author>volatile</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94173</guid>
        <pubDate>Sun, 27 Oct 2002 20:11:26 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94173</link>
        <description><![CDATA[DNick: Судя по всему затык случился с алгоритмом определения пересечения 2 отрезков. (этот алгоритм рассматривают в курсе алгебра и начало анализа любого ВУЗа) Определяется с помощью уравнения прямой. Для любителей изврата, можно перевести в полярные координаты, и определить пересечения прямых, если это делать взяв в качестве начала отсчета точку одной прямой, а затем, другой, то можно установить пересечение отрезков.(сам пользовался этим алгоритмом, ну не помню я первого давно это было, на первом курсе). Так вот для решения данной задачи надо перебрать около 500000 пар отрезков(1-2,3-1 3-2,4-1 4-2 4-3...) На 800 пне я даже глазом моргнуть не успел, 10млн. переборов ЗАГРУЗИЛИ комп на 2 сек. :) Если пользоваться первым алгоритмом(для тех кто помнит) скорость расчетов будет раза в 3-4 выше.]]></description>
        <author>DNick</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94172</guid>
        <pubDate>Sun, 27 Oct 2002 18:01:09 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94172</link>
        <description><![CDATA[volatile: КАКОГО ПЕРЕБОРА? Ты просто строишь стену и смотришь - упёрлась она или нет. Какой тут нужен перебор - план-то у министра УЖЕ ЕСТЬ! Тебе не предлагают придумывать его самому.<br>Ну, читай весь файл целиком - мало ли какие могут быть ускорения.<br>А скорость машины была в условиях - только не в тексте, а перед глазами - какие были машины на олимпиаде, для таких и надо.]]></description>
        <author>volatile</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94171</guid>
        <pubDate>Sun, 27 Oct 2002 17:48:47 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94171</link>
        <description><![CDATA[shadeofgray: проблема как раз в условии о времени работы. Несложно проводить простую проверку на пересечение стен - но неизвестно, какая производительность у тестового компа. А если это 386 то при N=1000 может произойти затык. Скорость перебора должна быть минимум 100000 пар стен в секунду - или придумывать другой алгоритм.]]></description>
        <author>shadeofgray</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94170</guid>
        <pubDate>Sun, 27 Oct 2002 16:59:46 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94170</link>
        <description><![CDATA[volatile: Ну и напиши интерпретатор этого языка - в чём проблема? &nbsp;??? ??? ???<br>Язык простой - фактически два оператора.<br>Создай в памяти Флатландию и вперёд - выполняй план министра! &nbsp;;)]]></description>
        <author>volatile</author>
        <category>Алгоритмы</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94169</guid>
        <pubDate>Sun, 27 Oct 2002 11:37:10 +0000</pubDate>
        <title>Великая Флатландская Стена</title>
        <link>https://forum.sources.ru/index.php?showtopic=9789&amp;view=findpost&amp;p=94169</link>
        <description><![CDATA[kenai: В один прекрасный день мне в руки попала задачка с какой-то там олимпиады. И она поставила меня в тупик! Предлагаю её вашему вниманию:<br><br>Имя входного файла:                                   input.txt<br>Имя выходного файла:                                 output.txt<br>Максимальное время работы на одном тесте: 10 секунд<br>Чтобы защитиь свою страну от набегов кочевников, призедент Флатландии решил построить Великую Флатландскую Стену. Страна Флатландия представляет собой координатную плоскость, её столица находится в точке (0, 0). Именно из столицы планируется начать строительство стены.<br>План постройки стены представляет собой последовательность инструкций строителям. Инструкции бывают следующего вида:<br>&lt;направление строительства&gt; &lt;длина&gt;<br>&lt;направление перемещения&gt; &lt;расстояние&gt;<br>В первом случае строители возводят стену указанной длины от точки, где они находятся, в указанном направлении. Во втором случае строители перемещаются на указанное расстояние в указанном направлении, не возводя при этом стены.<br>Направление строительства задается заглавной латинской буквой, а напраление перемещения - строчной латинской буквой. Соответствие букв направлениям приведено ниже:<br>Буква--------Направление------Вектор<br>N n               Север                 (0, 1)<br>E e               Восток                (1, 0)<br>S s               Юг                      (0, -1)<br>W w             Запад                  (-1, 0)<br>---------------------------------------<br>Длина и перемещение задаются в километрах и представляют собой целые числа.<br>Однако оказалось, что план министра может оказаться невыполнимым - в некоторый момент строители при выполнении инструкции могут столкнуться с уже построенной ими стеной! Выясните, выполним ли план министра и если нет, выведите координаты точки, в которой впервые произойдет столкновение с уже построенной стеной.<br>Формат входных данных.<br>На первой строке входного файла расположено число N - количество инструкций в плане министра (0 &lt;= N &lt;= 1000). Последующие N строк содержат инструкции плана. Их формат следующий: сначала идет одна из допустимых букв, заглавная буква означает, что следует строить стену, а строчная - что следует просто переместиться. Затем, отделенное от буквы ровно одним пробелом, идет целое число Хi - какой длины следует строить стену, либо на сколько надо переместиться (1 &lt;= Xi &lt;= (10 в 6-ой)).<br>Формат выходных данных.<br>На первой строке выходного файла выведите &quot;yes&quot;, если план можно выполнить, либо &quot;no&quot;, если нельзя. План можно выполнить, если строители, которых будем считать материальной точкой, никогда не оказываются в точке, через которую проходи участок стены, который они сейчас строят или только что построили (считаем стену состоящей из отрезков). В случае отрицательного ответа выведите на второй стоке координаты точки, в которой произойдет столкновение со стеной, сначала X, а затем Y. Числа должны быть разделены пробелом.<br>Примеры.<br>---input.txt----<br>4<br>N 4<br>e 3<br>S 2<br>w 1<br>---output.txt---<br>yes<br><br>---input.txt----<br>4<br>N 4<br>e 3<br>S 2<br>w 3<br>---output.txt---<br>no<br>0 2<br><br>P.S. Код в стиле ANSI/ISO безо всякого выпендрежа.]]></description>
        <author>kenai</author>
        <category>Алгоритмы</category>
      </item>
	
      </channel>
      </rss>
	