Всем привет!
Скажем у нас есть какая-та задача, которая просит найти что-то мин/макс. Как можно определить(доказать) возможно ли решить эту задачу жадным способом? Либо додуматься, что по-любому придется применить что-то умное вроде динамического программирования.
Написать и отправить. Если получил AC — значит возможно. Всегда так делал.
особенно актуально на соревнованиях, где вердикт по задаче появляется после окончания соревнования
Кормен, Жадные алгоритмы, Матроид.
Знать матроиды полезно — разумеется, да.
Знание матроидов даёт универсальный или хотя бы почти универсальный критерий применИмости или неприменИмости жадности — разумеется, нет.
Например, задача http://www.olymp.vinnica.ua/index_ua.php?lng=ru&cid=198 — очень даже жадно, но ни разу не матроидно. Можно и что-то попроще: дана совокупность отрезков на координатной прямой, найти максимальное по количеству их подмножество, чтоб никакие два отрезка выбранного подмножества не имели ни одной общей точки.
http://sis.khashaev.ru/2013/july/b-prime/kGSI8DSDeS8/