Алгоритмы

Делите задачу на части. А эти части - на более мелкие части. И так до тех пор, пока части не станут настолько простыми, что Вы их легко закодируете.

Можно также взять какой-нибудь сайт типа литкода, и решить на нём все задачи, начиная с простых.
В подобных задачах просто надо постараться свести задачу к одной или нескольким (таким же) задачам меньшего размера. Если решения подзадач могут понадобиться несколько раз, то стоит их запоминать, чтобы не вычислять многократно. А ещё лучше прикинуть, решение каких подзадач потребуется, и решать их, начиная с самых маленьких (строить ответ снизу вверх).
Когда задача будет решена, нужно посмотреть, какие операции со структурами данных используются. И подобрать структуры данных, у которых будет оптимальная сложность для данных операций.

0