BOJ : https://www.acmicpc.net/problem/14750

 

과제로 이 문제를 풀게 되어서 간단하게 방법만 소개하고자 한다

 

알아야할 정보는 다음과 같다

 

1. N K H M 순으로 인풋이 주어진다

2. N개만큼 다각형의 좌표가 주어진다(반시계방향)

3. H개만큼 홀의 갯수가 주어진다

4. M개만큼 쥐의 마리수가 주어진다

5. 각 홀은 최대 K마리의 쥐가 숨을 수 있다

6. 각 쥐는 당장 시야에 보이는 홀에만 들어갈 수 있다

   조건으로는 쥐와 홀에 대해서 선을 그엇을때 다른 벽이나 모서리와 겹치지 않아야한다.

7. 각 쥐는 반드시 다각형 내부에 존재한다 -> 다각형 선분위에 존재하지 않는다

8. 각 홀은 반드시 벽(선분)에 존재한다

9. 두개이상의 홀이나 쥐가 같은 위치에 존재하지 않는다

 

이때 모든 쥐가 숨을 수 있나 없나를 묻는 문제로,

문제를 해결하기 위해 필요한 지식은 

선분 교차확인법, 이분매칭 이렇게 2가지이다.

 

쥐와 홀의 쌍에 대해서 모든 벽과 선분교차를 확인하여

쥐가 들어갈 수 있는 홀을 따로 찾아둔 후에,

이분매칭을 통해서 쥐가 최대로 숨을 수 있는 마리수를 찾는다.

이때 이분매칭의 값이 쥐의 마리수와 같다면 possible이 된다

'algorithm > BOJ' 카테고리의 다른 글

BOJ 1103번 게임  (0) 2021.03.16
BOJ 2194번 유닛 이동시키기 C++  (0) 2020.07.05
BOJ 1647번 도시 분할 계획  (0) 2020.04.11
BOJ 1922번 네트워크 연결  (0) 2020.04.11
BOJ 1197번 최소 스패닝 트리  (0) 2020.04.10

+ Recent posts