• Как оптимизировать код с++ с рекурсией в времени?

    wataru
    @wataru Куратор тега C++
    Adamos, Она вам задана рекурсивно. Если там не написано, что надо ее именно так написать в коде, то - нет.

    Если в задаче, например, сказано, что F(x) = sum i=1..x i, то функция заданна циклом. Но ее можно реализовать как x(x+1)/2.

    Если вам надо обязательно иметь в коде рекурсивную F, то никак особо вы код не с оптимизируете. S разверните в цикл - и все. Но этого, скорее всего, не хватит.
    Написано
  • Как в C++ создать массив с неизвестным числом элементов?

    wataru
    @wataru Куратор тега C++
    Вообще, некоторые компиляторы c++ поддерживают массивы переменной длины, и можно даже в коде написать:
    cin >> n;
    int a[n];


    Это называется VLA, и вообще идет из C, но оно не стандартно и не всегда и везде скомпилируется.
    Написано
  • Как переобразовать string в const unsigned char* в C++?

    wataru
    @wataru Куратор тега C++
    ASASDASDASDA, Только не забывайте, что это лишь указатель на память, которой владеет string. Поэтому если у вас str в примере выше выйдет из области жизни и удалится, то str_ptr останется висячим указателем.

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

    wataru
    @wataru Куратор тега Алгоритмы
    Смотрите: вы добавляете в граф какие-то ребра. Надо чтобы после этого кратчайшие пути между заданными парами вершин укладывались в заданные ограничения. Ведь добавляя ребра вы можете какие-то пути улучшить (какие-то может и не улучшатся от каких-то ребер, но хуже нигде не станет. Ведь никто не заставляет пакеты ходить по новым ребрам).

    Среди всех вариантов добавить ребра и уложиться в ограничения вам надо выбрать тот, который использует наименнее дорогие добавления. Не суммарно, а худшее.

    Ну, тест, например,
    7 6
    1 2 1
    2 3 1
    3 4 1
    4 5 1
    5 6 1
    6 7 1
    3
    1 4 2 1
    5 7 1 2
    1 7 1 3
    1
    1 7 4
    Вывод:
    2
    1 2
    Написано
  • Как устроен вывод в задаче?

    wataru
    @wataru Куратор тега Алгоритмы
    Sunter, Ну, время - путь в графе кратчайшей длины. В примере 2 добавив "1 3 1 3" вы создали путь из 1 в 3 длинной 3 (из одного нового ребра). Он укладывается в нужное ограничение.

    Добавление ребра "2 3 2 1" не помагает, потому что оно участвует в пути 1-2-3, и его стоимость 2+2 = 4, не укладывается в лимит по времени. Но добавить его в ответ все-равно можно, потому что цена добавления 1 меньше цены первого добавления. И кратчайший путь в графе (где длины ребер - время) все еще остается 3, через одно новое ребро 1-3.
    Написано
  • Как устроен вывод в задаче?

    wataru
    @wataru Куратор тега Алгоритмы
    Sunter, ах да. Вы еще стоимость и время в предложениях перепутали.
    Написано
  • Как устроен вывод в задаче?

    wataru
    @wataru Куратор тега Алгоритмы
    Sunter, простите, ответил на коммент до редактирования. Там на самом деле неважно и только второе предложение и оба вместе дают одинаково хороший ответ, ведь второе предложение самое дорогое. Так что 1 2 тоже валидный ответ.
    Написано
  • Как устроен вывод в задаче?

    wataru
    @wataru Куратор тега Алгоритмы
    Sunter,
    Выведите количество предложений о строительстве, которые необходимо удовлетворить.
    В следующей строке выведите номера предложений


    Ну вроде все понятно же написано.
    Написано
  • Как получить хендл без OpenProcess?

    wataru
    @wataru Куратор тега C++
    Вы мне отвечаете? Смотрите внимально, надо не ответ на свой вопрос писать, а комметарий к ответу.

    Что за дискриптор вы красть собрались?
    Написано
  • Почему ReadProcessMemory не может прочитать память и возвращает 299?

    wataru
    @wataru Куратор тега C++
    DanilkaC,

    ERROR_PARTIAL_COPY

    299 (0x12B)

    Only part of a ReadProcessMemory or WriteProcessMemory request was completed.



    Оно скопировало, но только часть.
    Написано
  • Почему ReadProcessMemory не может прочитать память и возвращает 299?

    wataru
    @wataru Куратор тега C++
    А что говорит GetLastError после вызова функции и получения назад ошибки?
    Написано
  • Как доказать, что граф планарный?

    wataru
    @wataru
    asault_ceko, нет какого-то простого алгоритма. Для больших графов - только компьютер сможет все проверить.
    Написано
  • Как из массива байтов HEX сделать сделать DEC?

    wataru
    @wataru
    Danilka2400, Ну, если числа такие маленькие, то нафига вам их в hex хранить в массиве? Массивы смело урезайте до 1-2 элементов и вообще заменяйте на word.
    Написано
  • Как из массива байтов HEX сделать сделать DEC?

    wataru
    @wataru
    Вот только весь этот подход не будет работать, если у вас в ваших числах не так много ведущих нулей. Что-то вроде {0x40, 0x42, 0x0F, 0x00, 0x00, 0xFF} * {0x04, 0x02, 0x00, 0x00, 0xFF} переполнится. Каждый из x и y еще вы подсчитаете, а их перемножение уже в word не влезет. Да и даже в 64-битный тип (Ибо там 66 бит наскребется суммарно).

    Danilka2400, обратите внимание.
    Написано
  • Как узнать, входит ли игрок1 (x,y,z) в поле игрок2 (x,y,z)?

    wataru
    @wataru Куратор тега Алгоритмы
    Rsa97, Ну нет, если дерево ленивое, а не как куча в массиве фиксированного размера, то там будет менее чем в 1.5 раза больше вершин, чем элементов сохранено. И менее чем в 1.5 раза больше, чем единичных ячеек.
    Написано
  • Как узнать, входит ли игрок1 (x,y,z) в поле игрок2 (x,y,z)?

    wataru
    @wataru Куратор тега Алгоритмы
    Rsa97, Ну... если хранить разряженный map из координат квадрата в список игроков там, то это будет работать да. Иначе потребление памяти будет астрономическое.
    Написано
  • Как узнать, входит ли игрок1 (x,y,z) в поле игрок2 (x,y,z)?

    wataru
    @wataru Куратор тега Алгоритмы
    Ярослав Иванов, Ну тогда никакого транзитивного замыкания не надо. Просто для каждого игрока в окто-дереве ищите соседей, запоминаете, что он с ними общается.
    Написано
  • Как узнать, входит ли игрок1 (x,y,z) в поле игрок2 (x,y,z)?

    wataru
    @wataru Куратор тега Алгоритмы
    Ярослав Иванов,
    > https://en.wikipedia.org/wiki/Octree Это может подойти?
    Да, это оно

    > Между n игроками. Да если пересекаются.

    А если они в линию выстроены. Первый пересекается со вторым, второй с первым и третьим, третий со вторым и четвертым и т.д. Тут они каждый с соседями общаются, или все со всеми?
    Если первый вариант, то все как я описал. если второй, то серверу после построения соседий придется еще каким-нибудь посиком в ширину или в глубину найти компоненты связности (или транзитивно замкнуть граф соседей).

    > У игрока нет возможности спрашивать. Это сервер решает кому и что отправлять

    Ну, будет как я написал в начале абзаца. Сервер решает переодически кто кому сосед и потом что хочет с этим делает.
    Написано
  • Не работает math.pow, что я делаю не так?

    wataru
    @wataru Куратор тега Математика
    #, Извиняюсь, не обратил внимание, что вы не автор вопроса. Пожалуйста, проигнорируйте мой предыдущий ответ вам.
    Написано
  • Не работает math.pow, что я делаю не так?

    wataru
    @wataru Куратор тега Математика
    #, Да не, разделение-то нормальное. Имена плохие. Назвали бы их term1 и term2. И вообще первый надо разделить на numerator и denominator, в котором у вас и была ошибка.
    Написано