Решение олимпиадных задач прежде всего учит решать задачи, и только потом алгоритмы и структуры данных. Получается некоторый склад ума, или подход к задачам, если хотите. Это очень помогает собрать мысли в кучу, формализовать задачу и решить ее, даже если там не нужны хитрые алгоритмы.
Алгоритмические знания же, на мой взгляд, тоже абсолютно нужны. Не каждый день и не во всех областях, но когда оно нужно, оно действительно нужно. Фишка в том, что без знания этих алгоритмов и умения формализовывать задачи вы даже не поймете, что где-то тут можно применить "алгоритм" - вместо короткого, простого и очень быстрого решения вам придется городить какой-нибудь громоздкий и сложный полный перебор, либо вообще непонятно что делать. Поэтому популярное мнение, что не нужно всем знать алгоритмы - достаточно выделенного математика в команде - я тоже считаю неверным.
Из моего опыта работы: в гугле мне приходилось писать динамическое программирование, всякие хитрые дихотомии (типа бинарный поиск, но по функции а не по массиву), линейные регрессии, хитрые структуры данных (типа sliding window max),
применять теорию чисел.
Одну задачу, что мне пришлось решать, я теперь спрашиваю на интервью. И она ничем не отличается от этих ненавистных многим "алгоритмических задач для интервью, которые никогда никому не понадобятся". Хотя я сам ее решение комитил и оно работает во многих миллионах компьютеров по всему миру.
Для баланса укажу также и минус олимпиадников - это привычка писать ужасно неподдерживаемый код. Но это легко лечится за несколько недель. Особенно, если в проекте работает код-ревью.