Публикации по теме 'competitive-programming'


Преобразование строки в целое число (atoi)
Вопрос: Реализуйте atoi , который преобразует строку в целое число. Сначала функция отбрасывает столько пробельных символов, сколько необходимо, пока не будет найден первый непробельный символ. Затем, начиная с этого символа, принимает необязательный начальный знак плюс или минус, за которым следует как можно больше числовых цифр, и интерпретирует их как числовое значение. Строка может содержать дополнительные символы после тех, которые образуют целое число, которые игнорируются и..

GCDEX — GCD Extreme
Заявление Учитывая значение N, вам нужно будет найти значение G. Значение G дано в следующем коде. G = 0; for (i = 1; i < N; i++) for (j = i+1; j <= N; j++) G += gcd(i, j); Здесь gcd() — это функция, которая находит наибольший общий делитель двух входных чисел. Первое решение По функции Мёбиуса: Временная сложность: O ( Q n log( n )) Оптимизация 1 Определите набор возможных значений N/k: Итак, можно перебрать S :..

Алгоритм голосования Бойера Мура
Для массива A, содержащего некоторое число, вам нужно найти элемент, вхождение которого в массиве больше, чем A.size () / 2. Итак, подход грубой силы , примените два цикла: первый указатель, указывающий на элемент, и другой указатель, чтобы узнать, сколько раз этот элемент входил в массив. Сложность времени O (n * n) Сложность пространства O (1) Второй подход : использование сортировки Отсортируйте массив, чтобы узнать, сколько раз элемент повторяется в массиве, здесь..

Leetcode[987] Вертикальный обход бинарного дерева
Сегодня мы рассмотрим следующую задачу, указанную как сложная , с степенью приемлемости 38,6% на момент написания. Проблема выглядит следующим образом: Учитывая root бинарного дерева, вычислите вертикальный обход бинарного дерева. Для каждого узла в позиции (row, col) его левый и правый потомки будут в позициях (row + 1, col - 1) и (row + 1, col + 1) соответственно. Корень дерева находится в (0, 0) . Обход по вертикали бинарного дерева представляет собой..

Битовые манипуляции для соревновательного программирования
Что такое битовая манипуляция? Мы работаем с языками высокого уровня, имея дело с компьютерами. Все дело в 0 и 1. скажем, вы конвертируете 5 в его двоичную форму 0101. Это не что иное, как битовая манипуляция, то есть преобразование целого числа в двоичную форму и выполнение всех операций только с использованием битов. Основные операции: И & OR | НЕ ~ Левый "шифт Сдвиг вправо ›› Исключающее ИЛИ ^ Итак, мы хорошо знакомы с операциями AND, OR, NOT, XOR, они почти..

Что я узнал сегодня — СМЕСИ
Я занимаюсь соревновательным кодированием несколько месяцев. В настоящее время я решаю проблемы SPOJ. Сегодня я столкнулся с интересной задачей под названием СМЕСИ . В основном в постановке задачи говорится, что Имеются n смесей, расположенных в ряд. Каждая смесь имеет один из 100 различных цветов (цвета имеют номера от 0 до 99). Нужно смешать все эти смеси вместе. На каждом шаге мы можем взять две смеси, стоящие рядом, и смешать их между собой, а полученную смесь поставить на их..

Руководство для учащихся по динамическому программированию №2
Динамическое программирование — это алгоритмическая парадигма решения задач, ориентированная на распознавание и устранение повторяющихся вычислений. Ранее на этой неделе у меня была еще одна статья, посвященная динамическому программированию, и перспектива, которую я нашел полезной. Я оставляю ссылку на это ниже. Руководство для учащихся по динамическому программированию №1 Динамическое программирование — это алгоритмическая парадигма решения задач,..