• Как найти количество помеченных связных графов?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Формула включения-исключения. Берете все графы, где хотя бы одна вершина соединена со всеми (их n*2^(n-2)*(n-1)), вычитаете все графы, где хотя бы две вершины соеденины со всеми (2 раза, ведь они 2 раза подсчитались), прибавляете графы, где хотя бы 3 вершины соеденины со всеми (3 раза)... И т.д.

    Графов, где хотя бы k вершин имеют степень n-1 - C(n, k)*2^{(n-k-1)(n-k)/2}: тут можно выбрать k вершин и для каждого ребра из оставшихся n-k вершин есть 2 варианта - оно или есть, или нет.

    Это будет за O(n log n) решение, если пердподсчитать все факториалы и обратные к им по модулю в задаче. Ну, или O(n^2), если считать сочетания через треугольник паскаля.

    Ражеванное объяснение:

    Сложно подсчитать количество графов где ровно 1 вершина такая полная. Но легко подсчитать те, где k или более таких. Мы их такие зафиксируем и нарисуем от них все ребра. А все оставшиеся ребра в графе могут быть любыми. Во-первых, можно выбрать эти k вершин - поэтому у нас есть множитель C[n,k]. Оставшиеся, незафиксированные ребра идут между любыми двумя оставшимся n-k вершин. Их (n-k)(n-k-1)/2. И каждое может быть или проведено или нет.

    Поэтому всего таких графов, с не менее k вершин: F(k)=C[n,k]*2^{(n-k)(n-k-1)/2}.

    Теперь, как подсчитать графы ровно с 1 вершиной? Можно взять F(1). Но мы насчитали много лишнего, Графы с 2мя такими вершинами мы в F(1) подсчитали 2 раза. Поэтому вычтем 2F(2). Теперь графы ровно с 3 вершинами мы подсчитали 3 раза в F(1) и 3 раза в каждом F(2). Поэтому пока мы их насчитали 3-2*3 = -3 раза. Поэтому прибавим 3F(3). И далее, получится, что графы ровно с 4-мя вершинами мы подсчитали 4 раза (4-2*6+3*4). И т.д.
    Ответ написан
    6 комментариев
  • В чем отличие представленных программ на C++ и Python?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    1. В C++ все сохраняется в output.txt, в питоне - stdout
    2. В конце, на C++ сортировка возрастающая, в питоне - убывающая
    Ответ написан
    1 комментарий
  • Можете пожалуйста помочь с решением задач?

    LaRN
    @LaRN
    Senior Developer
    Если упопядочить данные в списке "а" по возрастанию диапазонов, то не нужно будет всякий раз бежать до конца списка.
    Можно будет сразу сделать break как только st и end перестанут укладываться в диапазон rs-re.
    Опять же при наличии сортировки можно попообовать использовать бинарный поиск.
    Ответ написан
    3 комментария
  • Что нужно знать, чтобы стать хакером?

    @Loreweil
    Во-первых, нужно знать английский на уровне advanced. Ибо большинство актуальной литературы именно на этом языке.

    Начать советую с книжки Hacking Exposed. Можно скачать курс CEH с рутрекера. Но он, ИМХО, не очень, книга лучше. Скачать дистрибутив Kali Linux, изучать тулзы, которые в него входят, в первую очередь nmap.
    Изучить Metasploit (входит в Kali Linux). Для этого написана хорошая книга Metasploit Toolkit for Penetration Testing, Exploit Development, & Vulnerability Research.
    Записаться на курсы на такие или на такие.

    Изучая вышеприведенные материалы, когда будешь понимать, что есть пробелы в определенных знаниях (сетевые протоколы, программирование, операционные системы, криптография), подтягивать эти знания через википедию, литературу, курсы. Как-то так.
    Ответ написан
    2 комментария
  • Почему полностью зависает компьютер?

    gohdan
    @gohdan
    Системный администратор
    Обычно такие внезапные мёртвые зависания происходят при проблемах с жёстким диском. Система не может что-то записать или прочитать, и всё уходит в таймаут. Таймауты наслаиваются друг на друга, получаем мёртвое зависание.

    В других ответах писали про другие проблемы - на них не похоже, так как при проблемах с ОЗУ компьютер обычно внезапно перезагружается или программы падают по отдельности, при проблемах с перегревами компьютер выключается и включается только через некоторое время, при проблемах с драйверами обычно получаешь синий экран и перезагрузку.
    Ответ написан
    Комментировать
  • Почему полностью зависает компьютер?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) Проблемы с драйверами. Было подобное после установки китайских драйверов для перепрошивки девайсов. Помогут утилиты для сброса драйверов (resetHardware) и переустановки (тут или с офсайтов качать или использовать что-то вроде driverPack)
    2) Проблемы с оперативной памятью. Проверьте комп на работу с одной плашкой памяти. Попробуйте в разные слоты её вставлять. Протестируйте память программкой memtest
    3) Перегрев. Мониторьте температуры. Программ куча, от CPUid до AIDA64
    4) Проблема с матплатой и/или блоком питания. Проверить на вздутые конденсаторы, поискать на rom.by по названию платы - возможно это частая проблема конкретной платы
    Ответ написан
    Комментировать
  • Не скачивается kali linux с загрузочной флешки. что делать?

    Nird_o
    @Nird_o
    Побил рекорд по количеству прожитых мной дней
    Для начала можно при включении ноута, нажатием F11(возможно другая клавиша, при включении обычно пишет внизу) вызвать boot menu и явно указать флешку. Если в этом случае не загрузится, значит флешка не загрузочная. Пробуйте другую программу для создания загрузочных флешек. Например rufus
    Ответ написан
    4 комментария
  • Почему не загружается готовый manjaro с флешки?

    @vityaba3
    Возможные варианты:
    - Не установлен загрузчик (не туда установлен)
    - Нет флага BOOT на диске с загрузчиком
    - Нет драйвера у UEFI для загрузки с какого-то устройства (Установщик чистой Windows7 всегда требовал драйвер USB3.0 если загрузка производилась с USB3.0 порта (Что удивительно, даже если Flash была 2.0))

    По моему ЛИЧНОМУ мнению проще отключить UEFI и поставить в обычном (legacy BIOS) режиме. Лучше - на жесткий диск. Но это не самое лучшее решение.
    Ответ написан
    5 комментариев