Скачать презентацию Приезд генерала Так как на первом месте Скачать презентацию Приезд генерала Так как на первом месте

Разбор 8 февраля.pptx

  • Количество слайдов: 7

Приезд генерала • Так как на первом месте должен стоять солдат с максимальным ростом, Приезд генерала • Так как на первом месте должен стоять солдат с максимальным ростом, то логично поставить на первое место самого левого солдата с максимальным ростом, чтобы минимизировать время (число обменов). Исходя из таких же соображений на последнее место поставим самого правого солдата с минимальным ростом. Таким образом количество обменов это номер самого левого солдата с максимальным ростом  - 1 + n -  номер самого правого солдата с минимальным ростом. И если самый левый солдат с максимальным ростом стоит правее самого правого с минимальным ростом, то из этой суммы нужно вычесть один.

Эпическая игра • В этой задаче достаточно было просто промоделировать описанную игру. Искать наибольший Эпическая игра • В этой задаче достаточно было просто промоделировать описанную игру. Искать наибольший общий делитель можно разными способами. • static int NOD(int a, int b) • { • while(a!=0 && b!=0) • { • if (a > b) • a = a % b; • else • b = b % a; • } • return (a+b); • }

Черви • Есть два решения: • Мы можем сделать частичные суммы (sum[i] = a[1] Черви • Есть два решения: • Мы можем сделать частичные суммы (sum[i] = a[1] + a[2] +. . . + а[i]), а затем сделать бинарный поиск для каждого запроса, чтобы для каждого запроса q найти результат j со свойствами sum[j – 1]

Репосты • Для решения этой задачи надо было проитерироваться по записям о репостах и Репосты • Для решения этой задачи надо было проитерироваться по записям о репостах и поддерживать для каждого пользователя длину цепочки, которая заканчивается в нем. Здесь удобно воспользоваться словарем(Dictionary) из строки (имени пользователя) в целое число (длину цепочки). • Назовем такую структуру chain. Lengths, тогда при обработки строки вида <> надо просто выполнить присвоение chain. Lengths[a] = chain. Lengths[b] + 1. В качестве ответа надо вывести максимальное из значений chain. Lengths, что можно подсчитывать на лету. • Пара тонкостей: в начале надо занести chain. Lengths["polycarp"] = 1; а всюду при работе со строками приводить их к нижнему регистру (или верхнему), чтобы сделать сравнение строк нечувствительным к регистру букв.

Валера и трубы • Сначала построим такой обход прямоугольной таблицы, который посещает все его Валера и трубы • Сначала построим такой обход прямоугольной таблицы, который посещает все его клетки: • Пусть сначала мы стоим клетке (1,  1). Слева направо дойдем до самой правой клетки поля в этой строке, до клетки (1,  m). • Перейдем на следующую строку, в ячейку (2,  m). Справа налево дойдем до самой левой клетки поля в этой строке, до клетки (2,  1). • Перейдем на следующую строку. Повторим действия из пунктов 1. и 2. до тех пор, пока не посетим все клетки. • После того, как мы построили такой обход, получить ответ не трудно: достаточно первые (k - 1) трубу сформировать из 2 ячеек, а последнюю трубу из оставшихся.

Сильно связный город • Построим матрицу смежности и запустим dfs от каждой вершины. • Сильно связный город • Построим матрицу смежности и запустим dfs от каждой вершины. • Если при какой то вершине образовались хотя бы две компоненты связности - ответ No. • Если при всех точках образуют одну компоненту связности, то ответ YES