Изменения

Перейти к: навигация, поиск

Примеры сведения к задачам поиска потока

96 байт добавлено, 22:59, 10 января 2017
Нет описания правки
}}
===Решение===
{| cellpadding="3" style="margin-left: auto; margin-right: auto;"| [[Файл:Parquet_example_1.png|thumb|400px|Пример паркета]]| [[Файл:Parquet_example_2.png|thumb|400px|Пример раскраски]]|}
Сначала проверим, что <tex>2 \times B>A</tex>. Если это условие не выполнено, то все выгодней замостить только плитками <tex>1 \times 1</tex> и больше нечего считать. Теперь на нужно максимизировать количество плиток ценой <tex>A</tex>.
Раскрасим наш паркет по принципу шахматной доски, тогда один конец плитки <tex>2 \times 1</tex> будет лежать на черной клетке, другой – на белой. Итак, построим двудольный граф, одна доля которого будет содержать белые клетки, другая – черные. Ребра весом в <tex>1</tex> проведем между граничащими клетками. Добавим исток с ребрами в белые вершины весом в бесконечность и сток с ребрами из черных клеток весом тоже в бесконечность. Пускай <tex>f</tex> – величина найденного максимального потока между истоком и стоком, это и будет количество плиток <tex>2 \times 1</tex>. Ответом к задаче будет величина <tex>f \times A+(K-f) \times B</tex>, где <tex>K</tex> – общее число испорченных клеток.
Анонимный участник

Навигация