티스토리 뷰
반응형
solved.ac 티어 : 플래티넘 4
이문제는 한 행 과열에 단 한 개의 룩을 놔서 최대한 많이 놓은 개수를 출력하는 문제이다. 정말 간단한 이분 매칭 문제다.
행과 열에 한 개만 놓을 수 있다는 것은 행 또는 열을 잡고 자신이 놓을 수 있는 곳에 이분 매칭을 해주면 된다. 하지만 여기서 빈칸이 생기는데 그래도 공격이 막히지는 않으니 입력 위치가 아니면서 놓을 수 있는 곳들을 이분 매칭 해주면 된다.
예시 입력을 예를 들겠다.
왼쪽은 열, 오른쪽은 행이다.
평범한 룩 문제였으면 이분매칭이 이렇게 됐겠지만
이건 놓을 수 없는 곳이 있기때문에 놓을수 없는곳들을 빼주면
이렇게 되면서 놓을수 있는 최대 개수는 2개가 된다.
이 코드를 짜서 제출하면 정답이다.
def dfs(x):
for i in range(1,b+1):
if l[x][i]==1:continue
y=i
if t[y]:continue
t[y]=True
if q[y]==0 or dfs(q[y]):
q[y]=x
return True
return False
a,b,c=map(int,input().split())
l=[[0 for g in range(301)] for i in range(301)]
for g in range(c):
d,e=map(int,input().split())
l[d][e]=1
q=[0]*301
t=[0]*301
cnt=0
for i in range(a):
t=[0]*301
if dfs(i+1):
cnt+=1
print(cnt)
반응형
'ps' 카테고리의 다른 글
BOJ 7894(큰 수)풀이 (0) | 2021.01.17 |
---|---|
BOJ 12844(XOR)풀이 (0) | 2021.01.15 |
BOJ 2505(두 번 뒤집기)풀이 (0) | 2021.01.12 |
BOJ 17299(오등큰수)풀이 (0) | 2021.01.10 |
BOJ 18282(해킹) 풀이 (0) | 2021.01.10 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 개발
- 알고리즘
- 이분 탐색
- 그래프 이론
- 정렬
- C++
- 누적 합
- 다이나믹 프로그래밍
- 자료구조
- 자료 구조
- 완전 탐색
- 그리디 알고리즘
- A Dance of Fire and Ice
- Python
- 잡봇
- 이분매칭
- 트리
- codeforces
- 최소 스패닝 트리
- 그래프 탐색
- 선분 교차 판정
- 깊이 우선 탐색
- KOI
- BOJ
- 수학
- 트리에서의 다이나믹 프로그래밍
- discord bot
- 느리게 갱신되는 세그먼트 트리
- 세그먼트 트리
- 구현
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
글 보관함