p_ce1052   3년 전

노선도를 일직선으로 피고 노선의 구간 [a, b]에 대해 b가 a보다 작다면 b에 n을 더해서 관리한다.

1. 어떤 노선이 한 바퀴를 넘어가지 않는다면 즉 [a,b]에서 b<=n 이라면 두 가지 경우 중 하나로 어떤 노선에 포함된다.

0부터 a-1까지의 점들 중 하나가 b이상까지 뻗는 점이 있거나 똑같은 a점에서 b를 넘어서 뻗을 수 있어야 한다.

또는 한 바퀴 돌아서 나를 포함하려면 시작 위치에 관계없이  b+n 이상까지 뻗는 점이 있어야 한다. 

2. 어떤 노선이 한 바퀴를 넘어 간다면  즉 [a,b]에서 b>n 이라면 

0부터 a-1까지의 점들 중 하나가 b이상으로 뻗거나 a점에서 b를 넘어가는 점이 있어야 한다. 그 외 출발점이 a보다 크면서 나를 포함하는 것은 한 바퀴 이상 도는 노선은 없다는 조건 때문에 불가능.

위의 풀이를 위해 가능한 출발점을 좌표압축하고 세그트리를 사용했습니다 그리고 이미 본 노선이 다른 노선을 이후에 포함할 수 없도록 노선의 길이가 짧은 것부터 큰 노선 순으로 확인하였습니다. 

출력초과가 납니다. 어디가 잘못됬나요? ㅠㅠ 

akwk777   3년 전

10

2

9 2

0 2

정답: 1

주어진 코드로 나온 답:1 2

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