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


Понимание сложности алгоритма: ключ к выбору правильного алгоритма
В этом разделе мы обсудим тему сложности алгоритма. Когда дело доходит до алгоритмов, понимание сложности имеет решающее значение, поскольку оно учит нас, как определить, какой алгоритм лучше подходит для конкретной задачи. При создании нашего кода у нас часто возникают ограничения, такие как ограничения памяти и ограничения времени выполнения кода. Эти ограничения особенно важны при работе над вопросами компьютерного программирования. Понимание сложности алгоритма позволяет нам..

Как решить задачу ленивого бармена (соревновательное программирование): полный алгоритм с кодом
Описание проблемы: В популярном баре у каждого посетителя есть набор любимых напитков, и он с радостью примет любой напиток из этого набора. Например, в следующей ситуации покупатель 0 будет доволен напитками 0, 1, 3 или 6. настройки = { 0: [0, 1, 3, 6], 1: [1, 4, 7], 2: [2, 4, 7, 5], 3: [3, 2, 5], 4: [5, 8] } Ленивый бармен, работающий в этом баре, пытается уменьшить свои усилия, ограничив напиток рецепты, которые он должен запомнить. Учитывая ввод словаря, подобный..

Соревновательное программирование 101
Привет всем! Если вы следили за мной в течение достаточно долгого времени, вы хорошо нагрузили свои мозги. Теперь мы поднимемся! Я кодер, и мне нравится решать сложные задачи кодирования. Я не считаю себя претендентом на профессиональный код, но обычно я не отказываюсь от вопроса. В этом блоге я планирую направлять новичков, предлагая книги или веб-сайты и рассказывая о передовом опыте. Когда я впервые начал заниматься соревновательным программированием, все мои опытные друзья..

Начало работы с битами
Все мы знаем, как работает двусвязный список и что он неэффективно использует память. Но что, если я скажу, что двусвязный список можно реализовать с той же пространственной сложностью, что и односвязный список, с помощью какой-нибудь простой побитовой операции? Да, вы не ослышались! Битовые манипуляции — это то, что пригодится, когда нам нужно что-то оптимизировать. Здесь вместо сохранения исходного адреса памяти мы сохраняем побитовое XOR предыдущего и следующего узла, тем самым..

Начиная с конкурентного кодирования
Это продвинутая форма программирования, в которой мы склонны находить решение проблемы в ограниченном пространстве и времени с заданными ограничениями. Эти проблемы не являются реальными проблемами, но интуиция по отношению к ним очень помогает, когда мы решаем проблемы из реальной жизни. Ниже приведены 4 шага, а также советы, которые помогут любому стать экспертом в соревновательном программировании. 1) Выбор языка программирования Хороший конкурентоспособный программист является..

Как лучше всего изучать алгоритмы для программистов?
Однажды мне задали этот вопрос на Quora . Мой ответ получил 17.7k просмотров и много голосов. Человеку, задавшему вопрос, требовался определенный путь обучения и ресурсы. Когда я привык заниматься соревновательным программированием и изучать алгоритмы, я выполнил несколько шагов, чтобы изучить алгоритмы. Эти шаги мне больше всего подошли. Возможно, эти шаги могут быть полезны и для вас. Итак, здесь я делюсь своими шагами обучения - Чтение книги очень важно, потому что каждая тема..

703. K-й по величине элемент в решении Stream LeetCode.
Вопрос: Ссылка: https://leetcode.com/problems/kth-largest-element-in-a-stream/ Разработайте класс для поиска kth самого большого элемента в потоке. Обратите внимание, что это kth самый большой элемент в отсортированном порядке, а не kth отдельный элемент. Реализовать класс KthLargest : KthLargest(int k, int[] nums) Инициализирует объект целым числом k и потоком целых чисел nums . int add(int val) Добавляет целое число val к потоку и возвращает элемент,..