게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
알고리즘에서 시간복잡도에 대한 계산 방법....
게시물ID : programmer_282짧은주소 복사하기
작성자 : 창천을꿈꾸며
추천 : 0
조회수 : 1364회
댓글수 : 4개
등록시간 : 2014/01/15 00:34:22
시간제한이 1초인 문제를 풀고있는데요.. 알고리즘이


벡터x에 30만개의 원소를 넣는다. push_back()사용.

stl sort로 x를 오름차순정렬.

x.erase(unique(x.begin(),x.end()),x.end()) 을 사용하여 중복되는 원소 제거

for( i = 0~ 56만) 또다른벡터 y[i]=0; 초기화 처리.

for( i = 0~10만)
{
 이진탐색으로 원소의 갯수가 30만개인 x벡터안에있는 특정원소의 위치를 찾는다.
이진트리에서 제일 낮은 레벨중 이 위치번째의 노드를 1의 가중치를 변경하고..
        인덱스트리의 삽입 알고리즘 시행.
}
for( i = 0~10만) 
{
이진탐색으로 원소의 갯수가 30만개의 x벡터안에있는 특정원소의 위치를 찾는다.
이진탐색으로 원소의 갯수가 30만개의 x벡터안에있는 특정원소의 위치를 찾는다. (오타아님 두번해주는것)
        
y벡터로는 인덱스트리가 만들어져 있으므로 위에서 구한 두 위치의 구간사이에 1이 있는지 찾는다. [ lg n 의 시간복잡도 ]
}


요로코롬 되는데 1초가 한참 넘어가더라구요..;

for문이 1억번정도 돌면 1초가 걸린다고 알고있는데.. ㅠㅠㅠㅠ 

1억번 한참 안도는것같은데.. 제컴에서도 느리고 문제 채점사이트의 서버에서도 타임리밋이 초과했다고 뜨네용..
꼬릿말 보기
전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호