Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Tags
more
Archives
Today
Total
관리 메뉴

Eau de Cologne

[BOJ 26305] AibohphobiA 본문

acmicpc.net

[BOJ 26305] AibohphobiA

cologne 2023. 7. 5. 12:16

문제: https://www.acmicpc.net/problem/26305

 

풀이:

더보기

길이가 4 이상인 palindrome이 있으면, 앞 뒤에 두 문자를 떼어낸 문자열도 palindrome입니다. 그러므로, 우리는 길이 2 혹은 3의 palindrome이 생기지 않도록 유지해주기만 하면 됩니다.

DP의 상태를 현재 위치 (r,c)와, 현재 위치에 오기 전에 방문했던 문자 p 로 저장합니다. (r,c,p)(nr,nc,np) 로의 transition은 |rnr|+|cnc|=1 이고, A[r,c]=np 이며, A[nr,nc]pA[r,c] 모두와 다를 때 이루어지게 됩니다. 상태의 개수는 4NM을 넘지 않습니다. (p(r,c)와 인접한 칸 중 한 문자입니다)

 

이제 상태로 만들어진 Directed graph가 주어졌을 때, (0,0,NULL) 에서 (N1,M1,) 로 도달하면서 중간에 (ri,ci,)을 방문하는 가장 긴 경로를 찾으면 됩니다. 경로가 무한할 수 있고 이는 사이클을 계속 도는 것이므로 SCC를 묶어서 생각해줍시다. 이 이후에 도착점부터 시작하면서 역순으로 DP를 돌리면서 "현재 상태에서 (N1,M1,) 에 도달하는 최장 경로", "현재 상태에서 (ri,ci,)을 방문하면서 (N1,M1,)에 방문하는 최장 경로" 두 개의 상태를 저장해주면 됩니다.

 

코드: https://www.acmicpc.net/source/share/855d59872418417c881f35054572ec86

'acmicpc.net' 카테고리의 다른 글

[BOJ 8249] Dookoła świata  (0) 2023.07.07
[BOJ 23603] Fibonaccis’ vouchers  (0) 2023.07.05
[BOJ 14399] 2연산  (0) 2023.07.03
[BOJ 5477] Training  (0) 2023.05.30
[BOJ 17146] IZLET  (0) 2023.05.24