문제 링크
- http://icpc.me/14390
사용 알고리즘
- 이분 매칭
시간복잡도
- $O(NM \sqrt{NM})$
풀이
Codeforces Round #668 Div.1 E에 동일한 문제가 출제되었습니다.
타일의 개수를 최소화하는 것은, 모서리를 최대한 많이 끊어내는 것으로 생각할 수 있습니다. 이때 정답은 (타일을 놓아야 하는 칸의 개수 - 끊은 모서리의 개수)가 됩니다.
타일은 $1 \times K$ 꼴이기 때문에 각 덩어리가 꺾이면 안 됩니다.
따라서 아래 그림처럼 그래프를 만들고, 이 그래프에서 최대 독립 집합(Maximum Independent Set)의 크기를 구하면 됩니다.
이분 그래프에서 최대 독립 집합의 크기는 (정점 개수 - 최대 매칭 크기)이므로 Dinic이나 Hopcroft-Karp 등을 이용해 문제를 풀 수 잇습니다.
전체 코드
1 |
|