• Как решить хитрую задачку про этажи?

    @Mercury13
    Программист на «си с крестами» и не только
    Пусть турнир назначен на этаже X.
    На этажах 1…X живут L’ людей, на этажах X+1…N — H′ людей.
    Вопрос 1. Стоит ли переносить турнир на этаж X+1?
    Тогда для L′ людей добавляется лишний этаж, для H′ — исчезает лишний этаж, и выигрыш будет H′−L′.
    Стоит, если H′ > L′. Не стоит, если H′ < L′. Безразлично, если H′ = L′.

    Вопрос 2. Возможно ли такое: вверх на 1 перенести не удаётся (будет хуже или безразлично), но этаж Y > X оптимальнее (строго)?
    Раз вверх на 1 перенести нельзя, то H’ <= L’.
    Если этаж Y − 1 безразличен с Y, перенесём турнир туда. Если Y − 2 тже безразличен, то туда, и т.д. Остановимся на этаже Z. Видно, что Z > X + 1: если мы в результате этих движений добрались до X+1, то он лучше X, противоречие.
    Раз Z — оптимальный этаж, то у этажа Z−1 > X есть свои L″ и H″, и поскольку с Z−1 на этаж вверх перенести всё же можно, то H″ > L″.
    С другой стороны, при повышении этажа увеличивается L и уменьшается H, и L″ >= L′ >= H‘ >= H″, то есть H″ <= L″. Противоречие.

    Следствие 3. Если турнир выгодно перенести на несколько этажей выше/ниже, то его выгодно перенести и на этаж выше/ниже.

    Задача 4. Пусть на этажах 1…X−1 живут L людей, на этаже X — M людей, на этажах X+1…N — H людей.
    Для простоты считаем, что сверху и снизу есть по фиктивному пустому этажу — то есть теоретически можно (на практически неоптимально) проводить турнир в подвале и на чердаке.
    Задачу с переносом турнира вверх мы уже решали, и условие того, что турнир нельзя (или безразлично) перенести на этаж вверх: H <= L + M.
    Условие того, что турнир можно (или безразлично) перенести с этажа X−1: H + M >= L.
    Поскольку H + M + L = N (кол-во людей), то эти условия можно записать в виде: L + M >= N/2, L <= N/2
    (всё, получили чеканное условие, и ключи от чердака и подвала можно отдать техслужбам гостиницы.)

    Решение: Идём по этажам, считаем людей. Где накопится N/2, там проводим турнир.

    // считаем полное кол-во
    N = 0
    для i = [0..nFloors)
      N += a[i]
    // ищем, где половинка N
    sum = 0;
    для i = [0..nFloors)
      sum += a[i]
      если sum * 2 >= N
        вывести: i
        СТОП

    Расширенное решение: Если накопилось ровно N/2, безразличны данный этаж, все нулевые над ним, и ещё один ненулевой. (Можно без кода?)
    Ответ написан
    Комментировать
  • Как решить хитрую задачку про этажи?

    longclaps
    @longclaps
    Найди этаж - "медианный этаж" и помести всех на него (это такие этажи, что разница между живущими выше и живущими ниже минимальна).
    Спустись или поднимись на несколько этажей (столько, чтобы среди них были "родные" этажи постояльцев).
    Сравни сумму пройденых пролётов.
    Ответ написан
    2 комментария
  • Когда заголовок iostream заменяет другие заголовки, например, string?

    TrueBers
    @TrueBers
    Гуглю за еду
    Однозначно нужно подключать всё как положено. Совсем не факт, что какой-то другой компилятор будет у себя подключать где-то этот самый string.h. Точно так же может смениться реализация в другой версии, и всё поломается.

    По сути, работает оно по чистой случайности. Всегда подключайте необходимый заголовок. Проще всего смотреть на сайте C++ Reference. Там для каждого класса есть вверху строка Defined in header <...>. Вот этот хедер и подключайте всегда, будет работать в 99% компиляторов. А чтобы не замедлялась скорость сборки, добавляйте часто используемые заголовки в precompiled header.
    Ответ написан
    Комментировать
  • Когда заголовок iostream заменяет другие заголовки, например, string?

    tsarevfs
    @tsarevfs Куратор тега C++
    C++ developer
    iostream явно или еще через какой-то header включает string. Лучше всегда явно включать то, что вы используете. Так при модификации кода будет вылезать меньше ошибок.
    Ответ написан
    Комментировать
  • Как заменить файл в одном из расширений Chrome, чтобы браузер не ругался: "Это расширение могло быть повреждено"?

    @Sunsvision
    Просто так подменить не получится, но можно решить так:
    1) скопировать папку с расширением в другое место, переименовать ее (например добавить приставку Mod, просто для понимания)
    2) если внутри есть папка "_metadata" - удалить ее
    3) зайти в manifest.json изменить имя расширения (например опять же добавив приставку Mod), изменить значение поля key добавив случайную цифру в значение
    4) заменить-модифицировать нужные файлы
    5) зайти в chrome://extensions/ включить режим разработчика, ткнуть "упаковать расширение" и выбрать папку с измененным расширением. Подтвердить, после чего в папке появится файл расширения crx
    6) перетащить файл crx из папки на вкладку расширений и подтвердить установку
    Ответ написан
    1 комментарий
  • Как починить ошибку Uncaught TypeError: $(...).prettyPhoto is not a function?

    Ошибка связана с отсутствием плагина prettyPhoto
    Ответ написан
    Комментировать
  • Что такое список в функциональных языках программирования?

    Отвечу за Haskell.
    Вот список:
    data [a] = [] | a : [a]
    Т.е. список либо пуст, либо имеет [ссылку на] [недовычисленную] голову и [ссылку на] [недовычисленный] другой список - хвост. Т.о. чтобы пробежаться по списку (без использования готовых функций), надо проверять, не является ли он пустым, если нет, работать с головой, а хвост обрабатывать рекурсивно.
    Список иммутабельный, т.е. ничего никуда вставить нельзя, однако списки могут "шарить" общий хвост, например:
    list1 = [2,3,4]
    list2 = 1 : 2 : list1
    list3 = 0 : 0 : list1

    В памяти будет (после форсирования, рассмотрение ленивости я опускаю) как-то так:
    1-2
       \
        2-3-4
       /
    0-0
    Ответ написан
    Комментировать
  • Что такое список в функциональных языках программирования?

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

    Хранится поэлементно, где каждый элемент указывает на следующий элемент в списке (односвязный список).
    Ответ написан
    Комментировать
  • Когда набор связанных данных можно считать базой данных?

    В очень широком смысле БД можно считать массив данных, о структуре которого у вас достаточно информации для выполнения необходимых вам обработок, выборок и, вообще, операций. Например, если вы смотрите на бинарник в HEX-редакторе, и даже представления не имеете, что там - видео, картинка, или же записи о сотрудниках предприятия (ну или "догадываетесь" что там, но все же не имеете в распоряжении формальных и четких правил обработки этого набора байт), то это не база данных. Если же вы знаете, что в первых 4-х байтах у вас количество записей, а дальше - сами записи о сотрудниках, длиной 150 байт каждая, и вы знаете, где в этой записи нужные вам ФИО и зарплата - то это уже простейшая БД.
    Важно также, чтобы эти данные в той или иной степени отражали реальный мир: это могут быть актуальные данные, архивные (исторические) данные, но так или иначе вам должно быть известно (!), как эти данные соотносятся с реальностью. Даже если это тестовые данные, сгенерированные случайным образом - вам это должно быть известно. Иначе невозможно понять, можете ли вы в реальной системе принимать решения на основе этих данных, или нет.
    Конечно в современном мире файлик с записями "базой" обычно не называют, поэтому есть и другие критерии, например, упомянутая вами связность, и возможность ее реализации. Кроме того, если говорить о системе управления БД, то у нее должен быть формальный интерфейс для выполнения запросов по обработке данных - выборок, добавления и пр.
    Кстати, на вопрос проще ответить, если вы укажете конкретную модель БД - реляционную, объектную, или, например, документную. При введении модели вводятся и правила, которым должны удовлетворять данные, чтобы называться Базой данных.
    Ответ написан
    3 комментария
  • Когда набор связанных данных можно считать базой данных?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Вопрос философского толка, однако ;) Первое условие уже содержится в самом вопросе - данные в наборе должны быть связаны. Ну, а второе напрямую вытекает из первого и заключается в том, как же именно они связаны. Базой данных можно считать набор данных, связанных в контексте некоторой предметной области, причем связаных так, что это позволяет делать выборки данных, отвечающие на вопросы этой предметной области.

    Например, в контексте поиска телефонных номеров...
    Городской телефонный справочник - это база данных, т.к. данные в нем связаны таким образом, что позволяют находить номера. Если же мы перекроим его так, что каждому телефонному номеру будет поставлен в соответствие номер страницы, на которой этот номер напечатан, а каждой фамили - сумма отдельных цифр в телефонном номере, этот набор данных перестанет быть базой данных в контексте заявленной области (хотя в нем будут все данные из исходного набора, и даже больше)... зато легко может стать таковой для каких-нибудь гороскопно-нумерологических задач.
    Ответ написан
    3 комментария
  • Как в Windows учитывается время простоя потока в очереди на выполнение при планировании потоков?

    М. Руссинович, Д. Соломон - Внутреннее устройство Microsoft Windows 6-е издание
    Ответ написан
    Комментировать
  • Как в Windows учитывается время простоя потока в очереди на выполнение при планировании потоков?

    Neuroware
    @Neuroware
    Программист в свободное от работы время
    Гуглится не сложно. Почитать можно например тут.
    Ответ написан
    Комментировать
  • Как сформулировать отрицание на русском языке следующего высказывания?

    «Виктор пойдет на рыбалку» - A
    «Будет солнечная погода» - B
    «Будет жарко» - C
    (В и (не С)) <-> A - правильная формула.
    Отрицание там о ней составить не трудно.
    Ответ написан
    2 комментария
  • Как сформулировать отрицание на русском языке следующего высказывания?

    @Insower
    Солнечная погода и нет облаков, но я не возьму с собой кепку.
    Ответ написан
    2 комментария
  • Как сформулировать отрицание на русском языке следующего высказывания?

    Не понял вопрос. Так?
    Я не возьму с собой кепку если не будет солнца, если будут облака?
    Ответ написан
    Комментировать
  • Где найти информацию о статистическом описание помех в канале связи?

    Специализированных книг много (в основном печатные). Но каждый канал связи - уникален.
    Как Вы представляете себе единую модель спутникового канала, радиорелейки и проводной магистрали ?

    P.S. У нас на одном радиорелейном канале створ частично перекрывался железнодорожным мостом - каждая электричка приводила к пересинхронизации модемов. Как их расписание (день/ночь/час пик) в модель заложить ?
    Ответ написан
    4 комментария
  • Как в Java удалить крайний символ или строку, напечатанную на экране терминала?

    pi314
    @pi314
    Президент Солнечной системы и окрестностей
    Возможность есть, но она никак не связана с Java. Это можно сделать с помощью т.н. Escape-последовательностей, если они поддерживаются терминалом (если терминал работает в режиме эмуляции, например, VT-52 или VT-100). В таком режиме работает большинство терминалов в Linux.

    Удалить последнюю строку, выведенную с символом перевода каретки (когда после вывода строки курсор находится в позиции 1 следующей строки) можно, например, так:
    System.out.println("Hello world"); //Print the line
    
    System.out.print(String.format("\033[%dA",1)); // Move cursor up by 1 line
    System.out.print("\033[2K"); // Erase the line


    Полный список кодов можно найти, например, вот тут.
    upd:
    С помощью Escape-последовательностей можно делать намного больше: переключать цвета, позиционировать курсор, "стирать" части строки или весь экран, и т.д. и т.п. Для интенсивного использования ANSII, особенно под Виндой, може оказаться полезной Jansi.
    Ответ написан
    Комментировать
  • Существует ли способ установить на OS X 10.10 Yosemite собственную тему оформления?

    ehabarov
    @ehabarov
    IT Specialist
    Сам не пробовал, но, возможно, подойдут варианты, представленные по ссылкам:
    Top 7 Ways to Personalize Your Mac OS X Desktop
    How to Customize the Look and Functionality of OS X
    Ответ написан
    Комментировать
  • Существует ли способ установить на OS X 10.10 Yosemite собственную тему оформления?

    RicoX
    @RicoX
    Ушел на http://ru.stackoverflow.com/
    Изыди. Нескучные обои только в сборках зверя для винды и прочих говнопакетах, только в мак тащить это дерьмо не хватало.
    Ответ написан
    4 комментария