Skip to content

Commit d3abe52

Browse files
committed
fixed words
1 parent ce346af commit d3abe52

File tree

6 files changed

+16
-14
lines changed

6 files changed

+16
-14
lines changed
Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# Вещественный поиск
22

3-
> Пусть $f : \{l, l + 1, \dots, r - 1, r\} \rightarrow \{0, 1\} $ (функция, которая которая на области $[l, r]$ имеет область значений $\{0, 1\}$ и $f$ монотонная на этой области.
3+
> Пусть $f : \{l, l + 1, \dots, r - 1, r\} \rightarrow \{0, 1\} $ (функция, которая которая на области определения $[l, r]$ имеет область значений $\{0, 1\}$ и $f$ монотонная на этой области.
44
55
Всё что обсуждалось в предыдущей главе про целочисленный поиск работает и тут, так как область значений является аналогом отсортированного массива. Такой поиск называется `вещественный`, так как функция $f(x)$ похожа на математическую функцию. Главное, чтобы функция была монотонной.
66

77
Идея та же, что и при целочисленном бинарном поиске : сначала возьмём такие границы поиска $l = L, r = R$. После этого на каждом шаге будем сдвигать одну из границ $l, r$, в зависимости от значения $f\left(\dfrac{l+r}{2}\right)$. В тот момент, когда $l$ и $r$ отличаются на единицу, $r$ — искомый порог. Если считать, что значение функции в точке вычисляется за $O(1)$, то время работы алгоритма — $O(\log_2 (R − L))$, где $L, R$ — начальные границы поиска.
88

9-
Разовьём идею дальше, можно искать не только целочисленные точки, но и дробные!!! Увы, всерхточности добиться невозможно. Проблема заключается в том, что действительные числа хранятся в компьютере неточно(. Например, если ответ это число $\pi$. Для границ стоит использовать тип с самой большой точностью, в `c++` это тип `double`.
9+
Разовьём идею дальше, можно искать не только целочисленные точки, но и дробные!!! Увы, большой точности добиться невозможно. Проблема заключается в том, что действительные числа хранятся в компьютере неточно(. Например, если ответ это число $\pi$. Для границ стоит использовать тип с самой большой точностью, в `c++` это тип `double`.
1010

1111
Тем не менее, мы можем найти такое $x$ с погрешностью $\epsilon$:
1212
найдём такое $x$, что существует $x'$ такое, что $f(x') = 0, |x − x'| < \epsilon$. Единственное отличие от обычного бинпоиска : мы завершаем алгоритм в тот момент, когда $r − l < \epsilon$.
1313

1414
Время работы алгоритма (при условии, что значение $f$ вычисляется за $O(1)$ &mdash; $O\left( \log_2 \left( \dfrac{R−L}{\epsilon} \right)\right)$.
1515

1616

17-
Любой алгоритм целочисленного поиска, является подмножеством вещественного, в котором функция бинарна. Например, для проверки есть ли число в массиве, надо было лишь заменить `if (a[mid] < x)` на $f(mid, x) = a[mid] < x$.
17+
Любой алгоритм целочисленного поиска, является подмножеством вещественного, в котором функция бинарная. Например, для проверки есть ли число в массиве, надо было лишь заменить `if (a[mid] < x)` на $f(mid, x) = a[mid] < x$.
1818

src/data-structures/bin_heap.md

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,8 @@
1515
1. Не эффективно работают для операций сортировки и поиска в случае неоднородных данных.
1616
2. Не подходят для хранения данных, которые часто меняются.
1717
## Классическая куча поддерживает следующие операции:
18-
1. Добавить элемент (Сложность: O(logN))
19-
3. Извлечь максимальный элемент (Сложность: O(logN))
18+
1. Добавить элемент (Сложность: $O(\log n)$)
19+
3. Извлечь максимальный элемент (Сложность: $O(\log n)$)
2020
## Реализация кучи максимума
2121
Для начала создадим класс для кучи.
2222

@@ -180,7 +180,10 @@ int main() {
180180
```
181181
Вывод:
182182

183-
```cpp
184-
Max : 9 Size : 8 Max : 6 Size : 7 Empty : 0
185-
183+
```bash
184+
Max : 9
185+
Size : 8
186+
Max : 6
187+
Size : 7
188+
Empty : 0
186189
```

src/data-structures/queue_done.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@
1212

1313
2. Простота использования: Очередь имеет простой интерфейс, состоящий из основных операций добавления и удаления элементов. Это делает ее легкой в использовании и понимании.
1414

15-
3. Эффективность при работе с большими объемами данных: Очередь может быть эффективной при обработке больших объемов данных, так как добавление и удаление элементов происходит за пос
16-
15+
3. Эффективность при работе с большими объемами данных: Очередь может быть эффективной при обработке больших объемов данных, так как добавление и удаление элементов происходит за $O(1)$.
1716

1817
## Недостатки очереди:
1918

src/history/toc-plugin.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,15 @@
1010

1111
Давайте вернёмся к теме статьи. Подробное оглавление статьи является очень полезным, особенно в больших статьях, хотя мы и пытаемся писать всё кратко в одном файле. Самые известные проекты с оглавлением это книги или википедия.
1212

13-
На вике проета есть проект [mdBook-pagetoc](https://github.com/JorelAli/mdBook-pagetoc). Посмотрите примеры на тестовом [сайте](https://jorel.dev/mdBook-pagetoc). Действительно красиво, там даже issues в `mdbook` сделан. В общем автор просто написал скрипт на js, который настолько простой, что можно его было и самому написать. Но если работает, не трожь, поэтому попробуем запустить проект.
13+
На вике `mdbook` есть проект [mdBook-pagetoc](https://github.com/JorelAli/mdBook-pagetoc). Посмотрите примеры на тестовом [сайте](https://jorel.dev/mdBook-pagetoc). Действительно красиво, там даже issues в `mdbook` сделан. В общем автор просто написал скрипт на js, который настолько простой, что можно его было и самому написать. Но если работает, не трожь, поэтому попробуем запустить проект.
1414

1515
# Интеграция в проект
1616

1717
Добавим в `book.toml` строки для новых js и css. Создадим папку `theme` и сделаем некоторый файл `index.hbs`, который поход на `html`.
1818

1919
Вообще [Handlebars](https://handlebarsjs.com/) (bhs) это очень старинный (я просто не разбираюсь в истории проктов) шаблонизатор на `js`.
2020

21-
Потом я ввёл в гугл что-то по типу `mdbook index.hbs` и даже нашёл сделал поиск по названию файла в репозитории, и в действительности это до сих пор используется. Чтобы использовать последнюю версию `index.hbs` я просто сдедал сравнение между последней [версией](https://raw.githubusercontent.com/rust-lang/mdBook/master/src/theme/index.hbs) `index.hbs` и версией в [плагине ](https://raw.githubusercontent.com/JorelAli/mdBook-pagetoc/master/theme/index.hbs). Единственное существенное отличие заключается только в блоке кода который начинается на `<div id="content" class="content">`, в нём стоит добавить
21+
Потом я ввёл в гугл что-то по типу `mdbook index.hbs` и даже нашёл сделал поиск по названию файла в репозитории, и в действительности это до сих пор используется. Чтобы использовать последнюю версию `index.hbs` я просто сделал сравнение между последней [версией](https://raw.githubusercontent.com/rust-lang/mdBook/master/src/theme/index.hbs) `index.hbs` и версией в [плагине ](https://raw.githubusercontent.com/JorelAli/mdBook-pagetoc/master/theme/index.hbs). Единственное существенное отличие заключается только в блоке кода который начинается на `<div id="content" class="content">`, в нём стоит добавить
2222

2323
```html
2424
<!-- Page table of contents -->

src/programming/loops.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,6 +174,6 @@ int main() {
174174

175175
Как видно часть условия `t != 5` не была нарушено, так как первый раз проверка производилась с `t=4`.
176176

177-
> `do` удобен лишь для [стрес-тестов](./how-to-testing.md). С `do` надо использовать [next_permutation](https://en.cppreference.com/w/cpp/algorithm/next_permutation) для перебора всех перестановок.
177+
> `do` удобен лишь для [стресс-тестов](./how-to-testing.md). С `do` надо использовать [next_permutation](https://en.cppreference.com/w/cpp/algorithm/next_permutation) для перебора всех перестановок.
178178
179179
Хорошенько потренируйтесь, попробуйте придумать свой пример с циклами. Когда поймёте, что поняли эту тему, можете смело приступать к следующему уроку.

src/tasks/task-about-segments.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
## Решение в лоб
1414

15-
Перебрать все отрезки двумя вложенными циклами, а затем проверить фиксированный отрезок. Ассимптотика данного подхода будет $O(n^2 \times c)$, где $O(с)$, это ассимптотика проверки отрезка, скорее всего она будет линейная, например, перебор всех элементов в отрезке и подсчёт некоторой величины.
15+
Перебрать все отрезки двумя вложенными циклами, а затем проверить фиксированный отрезок. Асимптотика данного подхода будет $O(n^2 \times c)$, где $O(с)$, это асимптотика проверки отрезка, скорее всего она будет линейная, например, перебор всех элементов в отрезке и подсчёт некоторой величины.
1616

1717
Иногда, когда надо проверить фиксированный отрезок, величину можно считать быстрее, например, взять сумму с помощью префиксных сумм или с помощью структур данных.
1818

0 commit comments

Comments
 (0)