seonh4996   4년 전

각 타일을 접미사배열을 활용해 이진탐색으로 찾아보는 방법으로 구현했습니다...

너무 어렵네요 ㅜ

Coxie   4년 전

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]를 전부 정렬해주고 슬라이딩 윈도우로 해결했습니다.

seonh4996   4년 전

감사합니다!!!!!!!!

한번 해보도록하겠습니다. 

한동안 답이 안달리는 질문이여서 반포기상태였는데 정말 기쁘네요 ㅜ

seonh4996   4년 전

@Coxie님 말씀하신 부분을 제가 아는 한도내에서 라인스위핑 사용해 최대한 고쳐봤는데 시간초과가 납니다 ㅜ..

fill말고 memset함수를 사용해봤구요.. 죄송하지만 어떤식으로 고쳐야지 통과되는지 알려주실수 있으실련지요..

seonh4996   4년 전

좀더 배우고 왔더니 바로해결했네요 ㅎㅎ

jyon   4년 전

seonh4996

저도 suffix array + lcp로 구현중인데요..

각 패턴을 찾는건 O(m+logn)에 되는데 각 패턴에 매칭되는 개수가 O(mn) = O(10^10)

어떤 짓을 해도 시간초과 뜰거같은데.. ㅠㅠ 어떻게 하신건가요.. 힌트 부탁드려요ㅠㅠ...

seonh4996   4년 전

@jyon

https://www.acmicpc.net/blog/view/88 이글 한번 읽어보시고 적용하시면 될것같습니다 ㅎㅎ

전역해서 이제야 답드리네요 ㅎㅎ

jyon   4년 전

@seonh4996 감사합니다. 좀 더 생각해볼게요..

댓글을 작성하려면 로그인해야 합니다.