imeimi's Blog imeimi's Blog
문제 풀이

IOI16 Aliens

https://oj.uz/problem/view/IOI16_aliens

최대 kk개의 사진을 찍을 수 있을 때, 모든 흥미로운 위치를 포함하기 위한 최소 영역의 크기를 찾아야 한다.

일단 필요 없는 점을 제거하거나 xx, yy좌표가 서로 바뀌어도 동치라는 사실을 바탕으로 xixi+1x_i \le x_{i+1}, yiyi+1y_i \le y_{i+1}를 만족하도록 흥미로운 위치를 정렬한다.

1778574985221-ca2d2fd3.png

이 문제를 풀 때 방해되는 것이 kk가 사진의 장수를 제한하고 있다는 것이다.

방해되는 kk를 치우기 위해 kk값이 변화할 때 cost의 변화를 그려보면 위 그래프와 같이 감소하면서 볼록하다는 것을 관찰할 수 있다.

이 그래프에서 xx좌표가 kk값일 때 yy좌표가 답이 된다.

그러나 아직 그래프의 각 점들의 좌표를 알 수가 없다.

여기서 이상한 생각을 할 수 있는데…

그래프의 접선의 기울기를 주면 (정확히는 접선이 아니지만 접선이라고 하자)

접점의 좌표를 알 수 있다는 것이다.

이것은 접선의 기울기를 c-c라고 하면 f(k)+ckf(k)+ck의 최솟값을 구하는 것과 같다.

f(k)+ckf(k)+ck는 원래 문제에서 사진을 찍는 비용에 cc원을 추가한 것과 같다.

접점 (k,f(k))(k, f(k))는 Convex Hull Trick을 이용하면 O(n)O(n)에 구할 수 있다.

이제 접선의 기울기가 감소하므로 최소(m2-m^2)부터 최대(00)까지 이분탐색을 통해 x=kx=k인 점을 찾을 수 있다.

주의할 점은 여러 점들의 접선의 기울기가 같을 때는 그중 한 점의 좌표만 나온다는 것이다.

시간복잡도는 O(nlogm)O(n\log m)이다.