티스토리 뷰
반응형
solved.ac 티어 : 플래 3
9525번: 룩 배치하기
체스와 관련된 문제는 처음 알고리즘을 배우기 시작할 때 부터 접하게 된다. 가장 유명한 문제로는 N-Queen 문제가 있다. 이를 변형해서 N-Rook 문제를 만들 수 있다. Rook(룩) 은 체스에서 같은 행이
www.acmicpc.net
이 그림은 노란색 행을 선택했을 때 선택될 수 있는 초록색 열이다.
이 그림은 파란색 행을 선택했을때 선택될수 있는 보라색 열이다.
이거처럼 행을 기준으로 나올 수 있는 열에 번호를 매겨서 이분 매칭을 해주면 된다.
위 그림을 번호를 매겨 줬을 때
빨간색은 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
- C++
- 정렬
- 그리디 알고리즘
- A Dance of Fire and Ice
- discord bot
- 선분 교차 판정
- BOJ
- 깊이 우선 탐색
- 수학
- 자료구조
- 트리에서의 다이나믹 프로그래밍
- 이분 탐색
- 이분매칭
- 그래프 탐색
- codeforces
- 자료 구조
- 다이나믹 프로그래밍
- 개발
- Python
- 알고리즘
- 세그먼트 트리
- 누적 합
- 트리
- KOI
- 그래프 이론
- 느리게 갱신되는 세그먼트 트리
- 최소 스패닝 트리
- 잡봇
- 구현
- 완전 탐색
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함