<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=109.188.163.226&amp;*</id>
		<title>Викиконспекты - Вклад участника [ru]</title>
		<link rel="self" type="application/atom+xml" href="http://neerc.ifmo.ru/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=109.188.163.226&amp;*"/>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:%D0%92%D0%BA%D0%BB%D0%B0%D0%B4/109.188.163.226"/>
		<updated>2026-06-11T10:55:47Z</updated>
		<subtitle>Вклад участника</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0%BA%D0%B0%D1%85._%D0%9A%D0%BE%D1%80%D0%BD%D0%B5%D0%B2%D0%B0%D1%8F_%D1%8D%D0%B2%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0&amp;diff=22730</id>
		<title>Обсуждение:Статистики на отрезках. Корневая эвристика</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%A1%D1%82%D0%B0%D1%82%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B8_%D0%BD%D0%B0_%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0%BA%D0%B0%D1%85._%D0%9A%D0%BE%D1%80%D0%BD%D0%B5%D0%B2%D0%B0%D1%8F_%D1%8D%D0%B2%D1%80%D0%B8%D1%81%D1%82%D0%B8%D0%BA%D0%B0&amp;diff=22730"/>
				<updated>2012-05-25T07:21:38Z</updated>
		
		<summary type="html">&lt;p&gt;109.188.163.226: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: {{tick | ticked=1}} категории&lt;br /&gt;
: {{tick | ticked=1}} мелочь, но все же когда пишут for i = a to b, это — по закрытому интервалу, так что лучше for i = 0 to n-1.&lt;br /&gt;
: {{tick | ticked=1}} лучше один раз напиши вначале, что у тебя это все строится над ассоциативной операцией (да по идее, это даже уже есть в опеределении), а дальше не перечисляй постоянно сумма/максимум/минимум. Просто говори «операция».&lt;br /&gt;
: {{tick | ticked=1}} нормально расписать среди каких элементов надо искать минимум, а то там какие-то левые k.&lt;br /&gt;
: {{tick | ticked=1}} Оценку лучше для каждой операции написать отдельно, потому что, например, по не совсем удачному примеру изменения создается ощущение, что его за O(1) можно делать.&lt;br /&gt;
: {{tick}} Собственно, про изменение — поменять-то надо два элемента, но это не означает O(1). При подсчете суммы просто повезло, что изменение элемента совпадает с изменением всего блока. Был бы минимум или произведение — пришлось бы заново пересчитывать всю операцию в блоке, так что лучше напиши псевдокод минимума/максимума/произведения. &lt;br /&gt;
:: «то нам необходимо поменять всего два элемента» — два элемента поменяются в обоих случаях же, просто количество операций будет разное.&lt;br /&gt;
::: {{tick}} Опять про два элемента. Да их в любом случае два изменится.&lt;br /&gt;
:::: Опять кривая формулировка. Значение для блока мы итак пересчитываем в обеих случаях. Просто прямо там же напиши, что в первом случае мы можем за O(1), а во втором — за O(sqrt(n)).&lt;br /&gt;
:: {{tick|ticked=1}} А ты уверен, что запрос на изменение должен принимать delta? Было бы странно, так как у тебя всегда происходит прибавление, а мы как-то пытаемся абстрагироваться. Мне кажется, просто нужна замена одного элемента другим.&lt;br /&gt;
:: {{tick|ticked=1}}Ты, видимо, хотел сказать, что если есть обратная операция, можно за O(1) делать изменение? Мне кажется, это неверно, нужна еще коммутативность. Например, с умножением и ненулевыми числами, это вроде работает:&lt;br /&gt;
 change(i, newValue):&lt;br /&gt;
     other = B[i / len] * inverse(A[i]) // типа деление&lt;br /&gt;
     A[i] = newValue&lt;br /&gt;
     B[i / len] = other * newValue&lt;br /&gt;
:: С произведением матриц такая штука уже, видимо, не прокатит. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 10:29, 16 мая 2012 (GST)&lt;br /&gt;
&lt;br /&gt;
: {{tick | ticked=1}} чтобы указать границы операции min, использовать \limits\&lt;br /&gt;
: {{tick | ticked=1}} Ну и вообще поправить всякий треш, а то тут сплошная копипаста емакса. --[[Участник:Dgerasimov|Дмитрий Герасимов]] 23:50, 6 февраля 2012 (MSK)&lt;br /&gt;
: {{tick}} изменение:&lt;br /&gt;
:: {{tick|ticked=1}} в псевдокоде одном случае используется абстрактная операция &amp;lt;tex&amp;gt; \circ &amp;lt;/tex&amp;gt;, а в другом — минимум. Используй и там и там абстрактную лучше.&lt;br /&gt;
:: {{tick|ticked=1}}Код для минимума вообще неправильный, у тебя в блоке будет всегда минимум двух его последних элементов.&lt;br /&gt;
:: {{tick|ticked=1}}почему в одном случае изменяется элемент i, а во втором — p? Пусть переменные будут одинаковые, и вообще, почитай правила оформления псевдокода и оформи весь код как функции, которые принимают индекс того, что изменить и новое значение, например (это и к остальному коду относится).&lt;br /&gt;
:: {{tick|ticked=1}} Напиши, что фича первой реализации в том, что она за O(1) может происходить, а вторая — за O(sqrt(n)).&lt;br /&gt;
:: {{tick|ticked=1}} index = len * (p / cnt) — мне кажется, ты хотел сказать index = len * (p / len), не?&lt;br /&gt;
:: {{tick}} «B[p / len] = A[index]; for i = index + 1 to index + len - 1; B[p / len] = B[p / len] o A[i]» — Лучше присвоить значение блока сначала нейтральному элементу, а потом нормально пробегаться по всем элементам блока. Также это к precalc относится. И к запросу.&lt;br /&gt;
:: {{tick}} Кстати, в таких случаях «запрос» принято переаводить не как request, а как query, и change как set. И precalc я бы переименовал в build (соответственно, «предподсчет» в «построение», у нас все-таки какая-никакая — а структура данных).&lt;/div&gt;</summary>
		<author><name>109.188.163.226</name></author>	</entry>

	<entry>
		<id>http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0%BA%D0%BE%D0%B2&amp;diff=22729</id>
		<title>Обсуждение:Многомерное дерево отрезков</title>
		<link rel="alternate" type="text/html" href="http://neerc.ifmo.ru/wiki/index.php?title=%D0%9E%D0%B1%D1%81%D1%83%D0%B6%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5:%D0%9C%D0%BD%D0%BE%D0%B3%D0%BE%D0%BC%D0%B5%D1%80%D0%BD%D0%BE%D0%B5_%D0%B4%D0%B5%D1%80%D0%B5%D0%B2%D0%BE_%D0%BE%D1%82%D1%80%D0%B5%D0%B7%D0%BA%D0%BE%D0%B2&amp;diff=22729"/>
				<updated>2012-05-25T06:58:39Z</updated>
		
		<summary type="html">&lt;p&gt;109.188.163.226: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;: {{tick|ticked=1}} Проставить категории, нормально оформить источники.&lt;br /&gt;
: {{tick}} Использовать абстрактную ассоциативную операцию, а не только сумму/максимум.&lt;br /&gt;
:: Я все же настаиваю на том, что нужна абстрактная операция, с ней будет большее понимание, что вообще происходит, больше внимания будет обращено на детали, связанные со структурой дерева, а не с особенностями конкретное операции.&lt;br /&gt;
: {{tick|ticked=1}} В пункте «Хранение» какая-то хрень.&lt;br /&gt;
: {{tick}} написать псевдокод&lt;br /&gt;
::: псевдокод чуть менее чем полностью идентичен емаксу. С точностью до бессмысленных имен переменных (tlx, trx и т.д.). &lt;br /&gt;
: {{tick}} написать более подробное объяснение.&lt;br /&gt;
:: Объяснения все еще по сути нет, только код. Нужно описание и к запросу и к обновлению.&lt;br /&gt;
: {{tick}} Рассматривать только двумерный случай - уг. Как раз таки, это не облегчает понимание. Нужно подробное описание n-мерного случая и псевдокод.&lt;br /&gt;
--[[Участник:Dgerasimov|Дмитрий Герасимов]] 18:46, 24 мая 2012 (GST)&lt;/div&gt;</summary>
		<author><name>109.188.163.226</name></author>	</entry>

	</feed>