티스토리 뷰

문제

BOJ 10717 성벽

klimmek55 2018. 11. 30. 19:39

성벽
(http://boj.kr/10717)


일본어 풀이가 있다.

왼쪽 위 꼭짓점을 기준으로 오른쪽 아래 꼭짓점을 찾는다고 생각해보자. 전체적으로 대각선 형태로 찾게 된다.
기준점에서 오른쪽 아래 점이 적어도 \(L-1\)만큼은 떨어져야 하고, 오른쪽으로 뻗어나갔을 때 최대 거리와 아래로 뻗어나갔을 때 최대 거리의 최솟값이 가능할만한 범위다.
다시말해 \([L-1~,\text{(뻗어나갈 수 있는 거리)}]\)가 확인해야할 범위다.

답이 되는 점들은 범위 안에 포함되는 점들 중에서 찾아야 한다.
이 점들은 왼쪽과 위로 뻗었을 때 최대 거리 중에 작은 것 만큼까지만 답이 될 수 있다.

그럼 이 점들을 찾는 시간을 줄여보자.
우선 상하좌우로 뻗는 거리는 DP로 구할 수 있다.
그리고 답을 찾을 때 범위 내의 합을 구하는 쿼리를 트리로 처리한다.
오른쪽 아래 점이 되는 점들은 어떤 시점(최대한 뻗어나갔을 때)이 지나면 항상 오른쪽 아래 점이 될 수 있다.
그러므로 이 시점을 저장해뒀다가 그 시점이 오면 트리(대각선)에 업데이트해준다.
그러면 매 점에서 자신이 왼쪽 위 점인 사각형은 트리를 사용해 구할 수 있게 된다.


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함