Корневая на строках: различия между версиями

Материал из Algocode wiki
Перейти к: навигация, поиск
м (latex fix + category)
м (abs fix)
Строка 1: Строка 1:
 
Данные идеи очень полезны в задачах, где есть ограничение на суммарный размер строк. Обозначим это ограничение за $\sum |S|$.
 
Данные идеи очень полезны в задачах, где есть ограничение на суммарный размер строк. Обозначим это ограничение за $\sum |S|$.
  
====Разбиение на тяжелые и легкие строки====
+
====Разбиение на длинные и короткие строки====
Назовем строку $S$ длинной, если $$|S| \ge \sqrt{\sum |S|} $$. Все оставшиеся строки назовем легкими.
+
Назовем строку $S \textit{длинной}$, если $|S| \ge \sqrt{\sum |S|}$. Все оставшиеся строки назовем $\textit{короткими}$.
 
 
{{Утверждение
 
{{Утверждение
|Утверждение=Существует не более  $$2 \cdot \sqrt{\sum |S|}$$ тяжелых строк.
+
|Утверждение=Существует не более  <nowiki>$\sqrt{\sum |S|}$</nowiki> длинных строк.
|Доказательство=Пусть существует более $$2 \cdot \sqrt{\sum |S|}$$ тяжелых строк. Тогда их суммарная длина больше, чем $$\frac{2 \cdot \sqrt{\sum |S|} \cdot \sqrt{\sum |S|}}{2} = \sum |S|$$, чего не может быть.
+
|Доказательство=<nowiki>Пусть существует более $\sqrt{\sum | S | }$ длинных строк. Тогда их суммарная длина больше, чем $\sqrt{\sum | S | } \cdot \sqrt{\sum | S | } = \sum | S | $, чего не может быть.</nowiki>
 
}}
 
}}
 +
  
 
====Количество разных длин====
 
====Количество разных длин====
 
{{Утверждение
 
{{Утверждение
|Утверждение=Количество различных длин строк не более, чем $$O(\sqrt{\sum |S|})$$.
+
|Утверждение=<nowiki>Количество различных длин строк не более, чем $O(\sqrt{\sum |S|})$.</nowiki>
|Доказательство=Пусть оно равно $$x$$. Тогда минимальная возможная сумма это сумма чисел от 1 до x. $$\sum_1^x = \frac{x(x + 1)}{2}$$. Так как это число должно быть меньше, чем $$\sum |S|$$, то $$x = O(\sqrt{\sum |S|})$$
+
|Доказательство=<nowiki>Пусть количество различных длин равно $x$. Тогда минимальная возможная сумма длин~--- это сумма чисел от 1 до $x$. $$\sum_{i=1}^x i = \frac{x(x + 1)}{2}$$ Так как это число должно быть меньше, чем $\sum |S|$, то $x = O(\sqrt{\sum |S|})$</nowiki>
 
}}
 
}}
  
 
[[Категория:Корневые оптимизации]]
 
[[Категория:Корневые оптимизации]]

Версия 13:40, 18 сентября 2019

Данные идеи очень полезны в задачах, где есть ограничение на суммарный размер строк. Обозначим это ограничение за $\sum |S|$.

Разбиение на длинные и короткие строки

Назовем строку $S \textit{длинной}$, если $|S| \ge \sqrt{\sum |S|}$. Все оставшиеся строки назовем $\textit{короткими}$.

Утверждение:
Существует не более $\sqrt{\sum |S|}$ длинных строк.

Доказательство:
Пусть существует более $\sqrt{\sum | S | }$ длинных строк. Тогда их суммарная длина больше, чем $\sqrt{\sum | S | } \cdot \sqrt{\sum | S | } = \sum | S | $, чего не может быть.


Количество разных длин

Утверждение:
Количество различных длин строк не более, чем $O(\sqrt{\sum |S|})$.

Доказательство:
Пусть количество различных длин равно $x$. Тогда минимальная возможная сумма длин~--- это сумма чисел от 1 до $x$. $$\sum_{i=1}^x i = \frac{x(x + 1)}{2}$$ Так как это число должно быть меньше, чем $\sum |S|$, то $x = O(\sqrt{\sum |S|})$