Ответы пользователя по тегу Программирование
  • Как лучше решить задачу на поиск ближайшего числа?

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

    Далее код для a, b - текущее, то что ищем соответственно.
    Код не проверял.
    function c1(a, b) {
      return (a <= b ? b - a : Number.MAX_VALUE );
    }
    function c2(a, b) {
      return (a >= b ? a - b : Number.MAX_VALUE );
    }
    function c3(a, b) {
      if (a <= b && b - a < Math.abs(b)*(1e-7))
        return 0;
      return Math.abs(a - b + Math.abs(b)*(1e-7));
    }
    function c4(a, b) {
      if (a >= b && a - b < Math.abs(b)*(1e-7))
        return 0;
      return Math.abs(a - b - Math.abs(b)*(1e-7));
    }
    Ответ написан
  • Структура, позволяющая добавлять/удалять полуинтервалы из множества и выводящая количество непересекающихся интервалов?

    @tomatho
    Сразу скажу, что описание задачи чуть-чуть отличается от того, что я понял по заголовку.
    По заголовку я подумал, что это структура хранящая некоторое множество из пар (l, r) где l, r обозначают концы интервала. И удаление l, r соответствует удалению пары.
    А оказалось, что это структура которая хранит множество, которое представимо в виде пар (l, r), где каждое (l, r) - такой полуинтервал.

    Первое, что лезет в голову - set, но set не подойдёт так как надо как-то уметь удалять сразу несколько элементов (l, r) если пришел + l r который покрывает несколько элементов, то их надо удалять быстро. Set же даёт возможность их удалять только за m log n где m - количество элементов которые надо удалить, и n размер дерева.

    Так что моё предложение: декартово дерево.
    Я бы предложил дерево отрезков, если бы min l и max r были в разумных пределах, так как оно проще пишется в этом случае.
    Ответ написан
    3 комментария
  • Где найти такую книгу по С#?

    @tomatho
    Не понимаю зачем вообще учить что-то перед изучением <название языка>.
    Почему бы не сразу заняться изучением <названия языка>?
    Ответ написан
    Комментировать
  • Как отрендерить буфер unsigned char* в D3D9 C++?

    @tomatho
    Я знаю два варианта.

    Первый - динамическая текстура. Ключевые слова:

    Теперь немного деталей:
    Usage: D3DUSAGE_DYNAMIC. Если нельзя - то обычная. Как проверить можно или нет - вторая ссылка.
    Формат: D3DFMT_X8R8G8B8 либо D3DFMT_A8R8G8B8 либо конвертируя на лету в D3DFMT_R8G8B8.
    Мипмапы: нет. Объяснение по второй ссылке.

    Чтобы разобраться - берешь любой сэмпл с текстурированым квадратом/треугольником и в нём просто меняешь текстуру на свою и тестишь. Затем уже меняешь формат, и usage (использование).

    Второй вариант - blt прям на surface. Теоретически можно. Практически - не проверял.
    Минусы - нельзя крутить вертеть, и так как это не текстура - соответственно нельзя наложить на мэш. (например нельзя отобразить как в экране некоторого виртуального монитора)
    Возможно и плюсов нет, но посмотреть в эту сторону тоже можно.
    Ключевое:


    PS: Ах да, забыл сказать. Даже не спрашивай меня про DX10+
    Ответ написан
  • На чем и как пишутся протоколы?

    @tomatho
    На бумаге, на английском языке, и раздел называется документация.
    Ответ написан
    Комментировать
  • Как систематизировать и структурировать знания?

    @tomatho
    Зачем систематизировать знания?
    Ассоциативные ссылки сами всё нужное вытащат из твоей памяти когда надо будет.
    Если не вытащили - значит не знаешь.

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

    @tomatho
    В INSERT укажи порядок значений через соответствующий синтакс:
    INSERT INTO Production.UnitMeasure (Name, UnitMeasureCode,  
        ModifiedDate)  
    VALUES (N'Square Yards', N'Y2', GETDATE());

    Это пример из MSDN
    Ответ написан
  • Как готовиться к олимпиадам?

    @tomatho
    Не знаю на счёт других областей, так что пишу только про ACM ICPC и смежные (похожие) так:
    Чтоб стать крутым, надо ежедневно по 2-3 часа минимум решать задачи в день.
    На всевозможных сайтах агрегаторах задач типа codeforces.ru, opencup.ru, topcoder.com, google codejam, acm.timus.ru и много много других.
    Участвовать во всех проходящих онлайн соревнованиях.

    Напоминает правило 10 тысяч часов. Есть такое мнение, что люди становятся профессионалами не из-за таланта, а по факту вложения человеко-часов в своё занятие.
    Однако, есть и уникумы, по типу Геннадия Короткевича (загугли, почитай).
    Лучшим в любой области стать почти невозможно. Однако шанс есть.

    Я дальше полуфинала ACM ICPC не проходил, так как был слишком ленив и решал задачи пару раз в месяц.
    Ах, совсем забыл: для чемпионства важен опытный тренер. Чтобы не тратить время на всякую чушь, и эффективнее "качаться".

    Ещё: я бы предпочел обсуждение с матёрым олимпиадником конкретного алгоритма, чем чтение литературы по онному. Очень важно скорость написания алгоритма, и легкая запоминаемость. Какие-то приёмы по его хорошему модифицированию, если в задаче требуется его мелкая модификация. Чтение кода лидеров тоже не повредит, чтобы понять как элегантнее написать.

    Многие простейшие алгоритмы можно написать элегантно и быстро, а можно долго мозговать а тут +1 индекс, или -1. А тут надо сколько прибавить? А условие <= или <. Очень много нюансов.
    Так же не повредит психологическая подготовка, если тренер могёт. Так как например меня трижды клинило на ответственных соревнованиях. Дважды на полуфинале ACM ICPC: сидишь как бревно, ничего не соображаешь, переволновался. И один раз на ВКОШП.
    Потом как только соревнование кончается (время закончилось), так сразу спадает волнение и начинаешь смотреть на задачи и думать: Что?!?! И это я не смог решить?!?!
    Ответ написан
    1 комментарий