Hacker News Digest

Тег: #competitive-programming

Постов: 3

Competitive Programmer's Handbook (2018) [pdf] (cses.fi) 🔥 Горячее

Книга «Competitive Programmer’s Handbook» Антти Лааксонена — это практическое руководство по алгоритмам и структурам данных, ориентированное на подготовку к программным соревнованиям. Оно охватывает основные темы: сложность алгоритмов, сортировку, поиск, динамические массивы, множества, словари, итераторы, полный перебор, жадные алгоритмы и динамическое программирование. Особое внимание уделяется реализации на C++ и эффективному написанию кода под ограничениями времени и памяти.

В разделе о сложности алгоритмов объясняются правила оценки времени работы, классы сложности (O, Ω, Θ) и методы оценки эффективности. Приводятся примеры, такие как максимальная сумма подмассива (алгоритм Кадане), демонстрирующие линейные решения. В части про сортировку рассматриваются теоретические основы, реализация в C++ через std::sort и применение бинарного поиска. Описываются структуры данных: векторы, множества (set, multiset), словари (map, multimap), их итераторы и практическое использование.

Раздел о полном переборе включает генерацию подмножеств, перестановок и использование backtracking с эвристиками обрезки поиска. Метод «встреча посередине» представлен как способ снизить экспоненциальную сложность до приемлемой для задач с n ≈ 40. Жадные алгоритмы иллюстрируются на примерах монетной задачи, планирования задач и минимизации сумм, с акцентом на условия, при которых жадность оптимальна. Динамическое программирование раскрывается через классические задачи: монеты, наибольшая возрастающая подпоследовательность, пути в сетке и рюкзак, с акцентом на определение состояний и переходов. В приложении даны ссылки на ключевые исследования и ресурсы, включая работы по алгоритмам Прима, Шарара и Тарьяна, а также полезные платформы вроде USACO и Szkopuł.

by vinhnx • 03 октября 2026 г. в 13:24 • 314 points

Оригинал • HN

#algorithms#backtracking#c++#competitive-programming#data-structures#dynamic-programming#greedy-algorithms#meet-in-the-middle#std-sort#usaco

Комментарии (82)

Обсуждение подчеркивает, что книга развивает алгоритмическое мышление как «умственную гимнастику», а не как прямой путь к успеху на собеседованиях. Она ценна как справочник по алгоритмам и структурам данных, полезный для понимания CS-основ, включая трейды производительности и паттерны памяти, и помогает преодолеть пробелы в образовании, особенно у тех, кто пришёл из смежных областей. Практика competitive programming улучшает навыки написания кода с меньшим количеством багов, ускоряет реализацию решений и воспринимается как способ «детоксикации» от чрезмерного использования LLM, возвращая глубокое мышление и ощущение личного достижения. Книга Лааксонена считается более глубокой и менее ориентированной на собеседования, чем LeetCode, что привлекает тех, кто ищет истинное понимание, а не подготовку к тестам. Опытные участники советуют не воспринимать её как руководство для собеседований, а как инструмент для долгосрочного роста. Она остаётся актуальной спустя 6 лет после публикации, поскольку фундаментальные алгоритмы и структуры данных не изменились. Задачи с CSES.fi, сопровождающие книгу, структурированы и включают проверку решений, что делает их ценным ресурсом для практики. Книга помогает выявлять «gotchas» в программировании — вопросы памяти, сложности и оптимизации — применимые независимо от языка. Несмотря на рост AI, многие считают, что изучение алгоритмов важно для формирования мощного способа мышления, даже если код пишут модели. Споры: некоторые считают LeetCode нерелевантным фильтром для найма, так как реальная работа редко требует задач в стиле соревнований; другие утверждают, что AI делает ручное кодирование устаревшим, но опыт критически важен для эффективного управления LLM в разработке. Книга более сухая и лаконичная, чем современные учебники, но это её сила — ориентирована на быстрое применение, а не на чтение для удовольствия. Некоторые рекомендуют альтернативы, например «Algorithmic Thinking» Зингаро, как более доступные для новичков, сохраняя плотность материала.

Advent of Code 2025: Number of puzzles reduce from 25 to 12 for the first time (adventofcode.com) 🔥 Горячее 💬 Длинная дискуссия

Advent of Code 2025 — это календарь программистических головоломок на каждый день декабря, доступных для решения на любом языке программирования. Созданный Эриком Вастлом, этот проект подходит для любого уровня подготовки — от новичков до опытных разработчиков. Участники используют его для подготовки к собеседованиям, обучения в компаниях, университетских курсов или просто для практики. Не требуется глубоких знаний компьютерных наук — достаточно базовых навыков программирования и решения задач. Все задачи можно решить на десятилетнем оборудовании за не более 15 секунд.

Проект поддерживается через AoC++ и социальные сети. Если вы застряли, автор советует проверять решения на примерах, создавать тестовые случаи и обращаться за помощью в subreddit. В разделе FAQ освещены вопросы аутентификации через OAuth, сложности задач (которые обычно возрастают со временем), разблокировки задач в полночь по EST, а также возможность участия в соревнованиях через приватные рейтинги.

by vismit2000 • 26 октября 2025 г. в 08:19 • 397 points

Оригинал • HN

#adventofcode#algorithms#competitive-programming#oauth#programming

Комментарии (191)

  • Сокращение до 12 дней вместо 25 вызвало бурную дискуссию: часть сообщества считает, что это разрушает саму суть "Advent of Code", в то время как другие отмечают, что это снизит нагрузку на автора и позволит ему продолжать проект.
  • Пользователи отмечают, что сокращение до 12 дней делает невозможным привычное соревнование за лидербордом, и что это может оттолкнуть некоторых участников.
  • Некоторые участники выразили обеспокоенность тем, что сокращение может повлиять на качество головоломок, так как автор будет иметь меньше времени на их разработку.
  • Некоторые участники предложили альтернативы, такие как выпуск головоломки каждые два дня вместо ежедневного выпуска, что позволило бы сохранить привычный формат мероприятия.
  • Участники также обсудили, что сокращение до 12 дней может повлиять на их собственные планы на декабрь, и что они могут не успеть решить головоломки до Рождества, что для них является важным элементом мотивации.

DeepMind and OpenAI win gold at ICPC (codeforces.com) 💬 Длинная дискуссия

OpenAI и DeepMind рады объявить/поделиться — Codeforces

Codeforces — платформа для соревнований по программированию.

Навигация:

  • Главная
  • Топ
  • Каталог
  • Контесты
  • Тренировки
  • Задачи
  • Группы
  • Рейтинг
  • Обучение
  • API
  • Календарь
  • Помощь

Ближайший контест:
Codeforces Global Round 29 (Div. 1 + Div. 2) через 3 дня. Регистрация открыта.

Топ рейтинга:

  1. jiangly (3914)
  2. Kevin114514 (3755)
  3. orzdevinwang (3670)
  4. tourist (3619)
  5. ecnerwala (3590)

Топ авторов:

  1. errorgorn (170)
  2. Qingyu (162)
  3. adamant (158)

Последние действия:

  • Обсуждение редакции раундов
  • Вопросы о повышении рейтинга
  • Обновления условий задач
  • Обсуждение возможных нарушений

by notemap • 17 сентября 2025 г. в 18:15 • 223 points

Оригинал • HN

#competitive-programming#deepmind#icpc#llm#machine-learning#openai

Комментарии (211)

  • OpenAI и DeepMind достигли высоких результатов в ICPC (12/12 и 10/12 задач соответственно), превзойдя лучшие человеческие команды.
  • Мнения разделились: одни считают результат прорывом, другие — следствием нечестных преимуществ ИИ (огромные вычислительные мощности и многократные попытки).
  • Критики указывают на отсутствие прозрачности: неизвестны затраты на вычисления, энергопотребление и степень стороннего контроля.
  • Подчеркивается фундаментальное отличие соревнований для людей (ограничения по времени, один компьютер на команду) и условий для ИИ.
  • Отмечается, что успех ИИ в узких, четко определенных задачах не обязательно переносится на реальную инженерию или научные прорывы.
  • Обсуждается растущий разрыв между возможностями корпоративных моделей и тем, что доступно обычным пользователям.
  • Результат заставляет пересмотреть assumptions о текущих возможностях LLM и их будущей роли в решении сложных задач.