Например скоростное програмированние.
Я так понимаю имелось ввиду не скоростное, а спортивное:
Решаю от силы 2/3 задачи с 10,просто не могу сложить алгоритм для решение задачи.
Тогда правильный ответ на твой вопрос действительно практика. Но тут как и в любой сфере способ практики надо верно подобрать - если писать только контесты ты будешь медленно расти. Нужны тренировки
У меня в свое время было 3 тренировочных контеста в неделю (ну и плюс контесты с codeforces noad). Один из них был по теме, которую мы проходили (большие темы, в основном структурки данных, занимали несколько недель - соответсвенно на них было несколько тренировочных контестов) и еще 2 просто контесты (олимпиады прошлых лет в основном).
Тематические контесты как оказалось реально классная вещь - много новых идей получаешь. А если прорешать кучу задач на одну тему, но в которых используются разные идеи, то сложно будет дать тебе задачу на эту тему, идею решения которой ты не встречал. Обычно чтобы решить задачу надо просто совместить X идей (тут нужна теория * практика) и все это реализовать (тут нужна практика^2). Глобально новых идей на контесте не будет.
Еще одна офигительная вещь - дорешка. Не решил задачу на контесте? Сел завтра, попробовал ее решить снова. Не решается? Смотри авторское решение, скорее всего там будет новая идея. Прочитал авторское - напиши, зашли в систему и получи по ней AC aka OK aka 100 баллов. Читать авторское и не засылать глупо, и даст несравнимо меньше навыков.
Порешай несколько тематических контестов, ХОРОШО в них разберись и идеи по этой теме на контесте начнут приходить сами.