2809번 - 아스키 거리
각 타일을 접미사배열을 활용해 이진탐색으로 찾아보는 방법으로 구현했습니다...
너무 어렵네요 ㅜ
if(s[0] =='\0'){ for(int i = a; i <= b; i++){ int k = sa[i]; fill(ans+k,ans+k+n,1); } return; }
이게 N^2이여서 34퍼에서 시간초과가 납니다.
이 부분만 고쳐주면 통과되요.
저는 sa[i]를 전부 정렬해주고 슬라이딩 윈도우로 해결했습니다.
감사합니다!!!!!!!!
한번 해보도록하겠습니다.
한동안 답이 안달리는 질문이여서 반포기상태였는데 정말 기쁘네요 ㅜ
@Coxie님 말씀하신 부분을 제가 아는 한도내에서 라인스위핑 사용해 최대한 고쳐봤는데 시간초과가 납니다 ㅜ..
fill말고 memset함수를 사용해봤구요.. 죄송하지만 어떤식으로 고쳐야지 통과되는지 알려주실수 있으실련지요..
좀더 배우고 왔더니 바로해결했네요 ㅎㅎ
저도 suffix array + lcp로 구현중인데요..
각 패턴을 찾는건 O(m+logn)에 되는데 각 패턴에 매칭되는 개수가 O(mn) = O(10^10)
어떤 짓을 해도 시간초과 뜰거같은데.. ㅠㅠ 어떻게 하신건가요.. 힌트 부탁드려요ㅠㅠ...
@jyon
https://www.acmicpc.net/blog/view/88 이글 한번 읽어보시고 적용하시면 될것같습니다 ㅎㅎ
전역해서 이제야 답드리네요 ㅎㅎ
@seonh4996 감사합니다. 좀 더 생각해볼게요..
댓글을 작성하려면 로그인해야 합니다.
seonh4996 4년 전
각 타일을 접미사배열을 활용해 이진탐색으로 찾아보는 방법으로 구현했습니다...
너무 어렵네요 ㅜ