С. Итеративные обновления по парам возможная правильная начальная и конечная вершины. Можм либо расширяться по равным ребрам, или присоединять к одному пути сбоку другой.
D. Учимся проверять подпоследовательность на удовлетворению условию (обычная динамика или в длинных или в дабл). После Этого 50-100 раз выбираем случайную подпоследовательность, если найдется подходящая то выдаем YES, иначе NO
E. Геометрия на написать. Надо пересечь плоскости(если совпадают то все просто) и найти точки пересесечения окружностей с прямой
F. Нужно понять что не одинаковых цифр будет мало (не больше 2-3), а дальше перебрать.
G. Динамика по временам последних сабмитов и оставшемуся числу задач
H. Динамика i,j,k считаем вероятность того, что если в сектора с i по j k раз упала стрелка, то она снесет там все крайние справа сектора. (если делить длины пополам, то можно сократить время работы в два раза)
I. Для каждой позиции вычислим выигрышная она или нет и сколько из нее есть ходов. Далее добавим все выигрышные в очередь, повычитаем ходы из тех что приводят в проигрышные по 1 за каждый такой ход, если образовалась с 0, то она становится проигрышной, а значит по обратным ребрам из нее находим все выигрышные ещё не учтенные и продолжаем. Всего позиций 64*49*36*25/4=700000 обратных ходов 16.
J. Все кроме первого и последнего номера будут учтены по два раза, так что нужно поставить туда макс элементы
K. Задачка на перебор по возрастанию с отсечением по сумме и четности.