Skip to content

CheTigor/AlgoritmsTraining

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Algoritms Training

Тренировка по алгоритмам

Данный репозиторий служит хранилищем для алгоритмов, которые были созданы в качестве тренировки.

*Каждый класс работает независимо, запускать каждый алгоритм необходимо из текущего класса (Current File).

Список алгоритмов:

1) Алгоритм Дийкстры (grafs -> Dijkstra)

На вход подается файл input.txt из resourses. В первой строке содержатся три числа: N, S и F (1≤ N ≤ 100, 1 ≤ S, F ≤ N), где N — количество вершин графа, S — начальная вершина, а F — конечная. В следующих N строках вводится по N чисел, не превосходящих 100, – матрица смежности графа, где -1 означает что ребра между вершинами нет, а любое неотрицательное число — наличие ребра данного веса. На главной диагонали матрицы записаны нули

Вывод в консоль: искомое расстояние или -1, если пути между указанными вершинами не существует.

*Данный алгоритм считается быстрым, так как использует приоритетную очередь (кучк) для поиска минимального ребра (что является первым в очереди).

Ввод (пример):

6 4
1 2 7
2 4 8
4 5 1
4 3 100
3 1

Вывод:

115

2) Сортировка слиянием (sort -> MargeSort)

В первой строке входного файла содержится число N — количество элементов массива (0 ≤ N ≤ 106). Во второй строке содержатся N целых чисел ai, разделенных пробелами (-109 ≤ ai ≤ 109).

Ввод (пример):

5
1 5 2 4 3

Вывод:

1 2 3 4 5 

3) Быстрая сортировка (sort -> QuickSort), (sort -> QuickSortThreePoints)

В первой строке входного файла содержится число N — количество элементов массива (0 ≤ N ≤ 106). Во второй строке содержатся N целых чисел ai, разделенных пробелами (-109 ≤ ai ≤ 109).

Ввод (пример):

5
1 5 2 4 3

Вывод:

1 2 3 4 5 

4) Поразрядная сортировка (sort -> RegexSort)

Первая строка входного файла содержит целое число n (1 ≤ n ≤ 1000) . Последующие n строк содержат каждая по одной строке si . Длины всех si , одинаковы и не превосходят 20. Все si состоят только из цифр от 0 до 9.

Ввод (пример):

9
12
32
45
67
98
29
61
35
09

Вывод:

Initial array:
12, 32, 45, 67, 98, 29, 61, 35, 09
**********
Phase 1
Bucket 0: empty
Bucket 1: 61
Bucket 2: 12, 32
Bucket 3: empty
Bucket 4: empty
Bucket 5: 45, 35
Bucket 6: empty
Bucket 7: 67
Bucket 8: 98
Bucket 9: 29, 09
**********
Phase 2
Bucket 0: 09
Bucket 1: 12
Bucket 2: 29
Bucket 3: 32, 35
Bucket 4: 45
Bucket 5: empty
Bucket 6: 61, 67
Bucket 7: empty
Bucket 8: empty
Bucket 9: 98
**********
Sorted array:
09, 12, 29, 32, 35, 45, 61, 67, 98

5) Равенство подстрок (string -> StringHashIsEqual)

В первой строке записана S (1 ≤ |S| ≤ 2 ⋅ 105), состоящая из строчных латинских букв. Во второй строке записано число Q (1 ≤ Q ≤ 2 ⋅ 105) — количество запросов. В следющих Q строках записаны запросы: целые числа L, A и B (1 ≤ L ≤ |S|, 0 ≤ A, B ≤ (|S| - L)) — длина подстрок и позиции, с которых они начинаются.

Ввод (пример):

acabaca
3
4 3 2
3 4 0
2 0 1

Вывод:

no
yes
no

6) Определить минимально возможную длину исходной строки (string -> MinPrefixSearch)

В первой и единственной строке входного файла записана строка, которая содержит только латинские буквы, длина строки не превышает 50000 символов.

Ввод (пример):

bcabcab

Вывод:

3

7) Z - функция (string -> ZFunction)

Одна строка длины N, 0 < N ≤ 106, состоящая из прописных латинских букв.

Ввод (пример):

abracadabra

Вывод:

0 0 0 1 0 1 0 4 0 0 1 

8) Задача "Кубики в зеркале" (string -> CubsInTheMirror)

Привидение Петя любит играть со своими кубиками. Он любит выкладывать их в ряд и разглядывать свое творение. Недавно друзья решили подшутить над Петей и поставили в его игровой комнате зеркало. Известно, что привидения не отражаются в зеркале, а кубики отражаются. Теперь Петя видит перед собой N цветных кубиков, но не знает, какие из этих кубиков настоящие, а какие — отражение в зеркале. Выясните, сколько кубиков может быть у Пети. Петя видит отражение всех кубиков в зеркале и часть кубиков, которая находится перед ним. Часть кубиков может быть позади Пети, их он не видит.

image

Первая строка входного файла содержит число N ( 1 ≤ N ≤ 1000000 ) и количество различных цветов, в которые могут быть раскрашены кубики — M ( 1 ≤ M ≤ 1000000 ). Следующая строка содержит N целых чисел от 1 до M — цвета кубиков.

Ввод (пример):

6 2
1 1 2 2 1 1

Вывод:

3 5 6

9) Алгоритм Манакера по поиску подпалиндромов в строке (string -> Manaker)

Вводится одна строка, состоящая из прописных латинских букв. Длина строки не превышает 100000 символов.

Ввод (пример):

aaa

Вывод:

6

About

Репозиторий для тренировки алгоритмов

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages