티스토리 뷰
반응형
solved.ac 티어 : 플래 3
이 그림은 노란색 행을 선택했을 때 선택될 수 있는 초록색 열이다.
이 그림은 파란색 행을 선택했을때 선택될수 있는 보라색 열이다.
이거처럼 행을 기준으로 나올 수 있는 열에 번호를 매겨서 이분 매칭을 해주면 된다.
위 그림을 번호를 매겨 줬을 때
빨간색은 1, 주황색은 2, 노란색은 3, 초록색은 4, 하늘색은 5, 보라색은 6, 핑크색은 7로 잡아주고(번호는 딱히 순서대로가 아니여도 된다.)
빨강색은 1,주황색은 2, 노랑색은 3,초록색은 4, 하늘색은 5, 보라색은 6으로 잡아주고 이분 매칭을 해주면(행이나 열이나 방법은 같다)
복잡하게 생겼지만 이렇게 된다.
import sys
sys.setrecursionlimit(10**9)
input=sys.stdin.readline
def dfs(x):
for i in range(len(l[x])):
y=l[x][i]
if t[y]:continue
t[y]=True
if q[y]==0 or dfs(q[y]):
q[y]=x
return True
return False
a=int(input())
n=[list(input()) for i in range(a)]
y1=[]
x1=[]
ycnt=0
xcnt=0
p=[-1,-1,-1,-1]
for i in range(a):
p=[-1,-1,-1,-1]
for g in range(a):
if n[g][i]=="X":
if p[0]!=-1:y1.append(p)
p=[-1,-1,-1,-1]
else:
if p[0]==-1:ycnt+=1;p[0]=g;p[1]=i
p[2]=g;p[3]=i
if p[0]!=-1:y1.append(p)
for i in range(a):
p=[-1,-1,-1,-1]
for g in range(a):
if n[i][g]=="X":
if p[0]!=-1:x1.append(p)
p=[-1,-1,-1,-1]
else:
if p[0]==-1:xcnt+=1;p[0]=i;p[1]=g
p[2]=i;p[3]=g
if p[0]!=-1:x1.append(p)
#print(y1)
#print(x1)
maxr=max(ycnt,xcnt)
l=[[] for i in range(maxr+1)]
q=[0]*(maxr+1)
t=[0]*(maxr+1)
for i in range(ycnt):
for g in range(xcnt):
if(y1[i][0]<=x1[g][0]<=y1[i][2])and(x1[g][1]<=y1[i][1]<=x1[g][3]):
l[i+1].append(g+1)
#print(l)
cnt=0
for i in range(maxr):
t=[0]*(maxr+1)
if dfs(i+1):
cnt+=1
print(cnt)
반응형
'ps' 카테고리의 다른 글
BOJ 14621(나만 안되는 연애)풀이 (0) | 2021.02.02 |
---|---|
BOJ 2570(비숍 2)풀이 (0) | 2021.02.01 |
BOJ 2565(전깃줄)풀이 (0) | 2021.01.30 |
BOJ 2912(백설공주와 난쟁이)풀이 (0) | 2021.01.24 |
BOJ 2352(반도체 설계)풀이 (0) | 2021.01.23 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- KOI
- 자료구조
- 다이나믹 프로그래밍
- 트리
- 정렬
- 세그먼트 트리
- 수학
- A Dance of Fire and Ice
- 선분 교차 판정
- Python
- codeforces
- 이분 탐색
- 최소 스패닝 트리
- 그래프 이론
- BOJ
- 구현
- 누적 합
- 트리에서의 다이나믹 프로그래밍
- 알고리즘
- 잡봇
- 자료 구조
- 느리게 갱신되는 세그먼트 트리
- discord bot
- 그리디 알고리즘
- 깊이 우선 탐색
- 개발
- 그래프 탐색
- 이분매칭
- 완전 탐색
- C++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
29 | 30 | 31 |
글 보관함