2차원 평면에 x좌표가 서로 다른 n개의 점이 주어진다.
이들을 x좌표 오름차순으로 정렬한 것을 p1, p>sub>2, ... , pn이라고 하자.
각각의 인접한 두 점 pi와 p(i+1)사이를 선분으로 연결하면 모든 점을 지나는 꺾은선(polygonal line) L을 얻을 수 있다.
하지만 꺾은선 L은 n-1개의 선분으로 이루어진다.
우리는 이 꺾은선 L의 선분의 개수를 줄이는 대신에 L이 지나지 않는 점들은 L로부터 y축 방향거리가 ε 이내에 있도록 하고 싶다.
점들의 부분집합 P(i1 ), P(i2 ), ... , P(ik ) (ij(j+1), k≤n)를 생각하자.
이 점들에서 인접한 두 점 P(ij )와 P(i(j+1) )을 선분으로 연결해서 얻은 꺾은선을 M이라고 하자.
여기서, P(i1 )=p1, P(ik)=pn이어야 한다.
다시 말해서, 꺾은선 M은 첫째 점p1과 마지막 점 pn지나야 한다.
위 부분집합에 속하지 않는 모든 점은 꺾은선 M으로부터 y축 방향거리가 ε이내(거리가 ε인 경우 포함)에 있어야 한다.
아래 그림은 두 점 P(ij )와 P(i(j+1) )사이의 모든 점이 P(ij )와 P(i(j+1) )을 연결하는 선분과 y축 방향거리가 ε이내에 있음을 보여준다.
n개 점의 좌표와 y축방향거리 제한 ε이 주어질 때, 위의 조건을 만족하는 꺾은선 M을 구성하는 선분 개수 중 최소값을 계산하는 프로그램을 작성하라.
[입력]
첫째 줄에는 테스트 케이스의 개수를나타내는 정수 T가 주어진다.
각 테스트 케이스마다 첫째 줄에점들의 개수를 나타내는 정수 n과 y축 방향거리 제한을 나타내는정수 ε이 주어진다. (1≤n≤10000, 0≤ε≤1000)
이어지는 n개의 줄 각각에는 한 점의 좌표 (x,y)를 나타내는 두 정수 x와y가 x좌표가 작은 것에서 큰 순서로 주어진다. (-106≤x,y≤106)
모든 점의 x좌표는 서로 다르다.
[출력]
각 테스트케이스마다 한 줄에 걸쳐, 테스트케이스 수 “#(TC) “를 출력하고, 위의 조건을 만족하는 꺾은선 M 중에서 선분 개수의 최소값을 출력한다.
이들을 x좌표 오름차순으로 정렬한 것을 p1, p>sub>2, ... , pn이라고 하자.
각각의 인접한 두 점 pi와 p(i+1)사이를 선분으로 연결하면 모든 점을 지나는 꺾은선(polygonal line) L을 얻을 수 있다.
하지만 꺾은선 L은 n-1개의 선분으로 이루어진다.
우리는 이 꺾은선 L의 선분의 개수를 줄이는 대신에 L이 지나지 않는 점들은 L로부터 y축 방향거리가 ε 이내에 있도록 하고 싶다.
점들의 부분집합 P(i1 ), P(i2 ), ... , P(ik ) (ij(j+1), k≤n)를 생각하자.
이 점들에서 인접한 두 점 P(ij )와 P(i(j+1) )을 선분으로 연결해서 얻은 꺾은선을 M이라고 하자.
여기서, P(i1 )=p1, P(ik)=pn이어야 한다.
다시 말해서, 꺾은선 M은 첫째 점p1과 마지막 점 pn지나야 한다.
위 부분집합에 속하지 않는 모든 점은 꺾은선 M으로부터 y축 방향거리가 ε이내(거리가 ε인 경우 포함)에 있어야 한다.
아래 그림은 두 점 P(ij )와 P(i(j+1) )사이의 모든 점이 P(ij )와 P(i(j+1) )을 연결하는 선분과 y축 방향거리가 ε이내에 있음을 보여준다.
n개 점의 좌표와 y축방향거리 제한 ε이 주어질 때, 위의 조건을 만족하는 꺾은선 M을 구성하는 선분 개수 중 최소값을 계산하는 프로그램을 작성하라.
[입력]
첫째 줄에는 테스트 케이스의 개수를나타내는 정수 T가 주어진다.
각 테스트 케이스마다 첫째 줄에점들의 개수를 나타내는 정수 n과 y축 방향거리 제한을 나타내는정수 ε이 주어진다. (1≤n≤10000, 0≤ε≤1000)
이어지는 n개의 줄 각각에는 한 점의 좌표 (x,y)를 나타내는 두 정수 x와y가 x좌표가 작은 것에서 큰 순서로 주어진다. (-106≤x,y≤106)
모든 점의 x좌표는 서로 다르다.
[출력]
각 테스트케이스마다 한 줄에 걸쳐, 테스트케이스 수 “#(TC) “를 출력하고, 위의 조건을 만족하는 꺾은선 M 중에서 선분 개수의 최소값을 출력한다.
문제를 긁어서 올리셈
금방 올리겠읍니다
1 4 1 1 2 2 3 3 2 4 -1
#1 2
예제 인풋과 아웃풋입니다
일단 시작점을 선택하고 시작함. 그 다음부터 그 점의 좌표를 이용해서 이전에 선택된 점에서 시작되는 선분의 기울기의 범위를 결정할 수 있음. 여태까지의 허용범위와 교집합을 해서 허용범위를 갱신하고, 만약 교집합이 빈다면 이전 점에서 시작된 선분이 현재 점까지 도달할 수는 없다는 의미이므로 바로 직전의 점(Pi에 대해 Pi-1)과 이전에 선택된 점을 연결하고 바로 직전의 점에서 시작되는 선분을 기반으로 다시 하면 됨. O(N).
알려주신대로 풀어보고 오겠습니다 감사합니다ㅠㅠ
저 이거 걍 n^2으로 풀었는데 맞았습니다.
....????테케가 빈약한거일까요????