Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
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
Tags
more
Archives
Today
Total
관리 메뉴

jay153의 PS 일지

BOJ 17668 본문

BOJ

BOJ 17668

jay153 2025. 2. 25. 23:14

https://www.acmicpc.net/problem/17668

 

코드

http://boj.kr/c12e64a1abaf44e6962f0cbae0872a06

 

JOI 2018/2019 Spring Training Camp 1-1

 

난이도 : D5

 

Elapse Time : 65min

 

값의 업데이트가 없어 오프라인 쿼리로 처리 가능하다는 것이 눈에 먼저 들어왔다. 가장 먼저 한 생각은 기준 3가지 중 정렬을 통해 1가지를 줄이는 것이었다. 학생들의 시험 점수쌍을 $S_i+T_i$를 기준으로 정렬하고 마찬가지로 쿼리도 $Z_j$를 기준으로 정렬하면 각 쿼리에서 점수 합 기준을 만족하는 점수 쌍들만 가지고 판단할 수 있다. 여기까지는 그냥 #2336과 비슷한 문제라고만 생각했지만 #2336에서는 다른 두 기준을 가지고 성립요건을 만족하는지만 판단하면 됐지만 이 문제에서는 성립요건을 만족하는 사람의 수를 세야 한다는 차이점이 있었다. 현재 가지고 있는 시험 점수 쌍 중 $S_i\geq X_j$, $T_i\geq Y_j$를 만족하는 쌍의 수를 구해야 하는데 좌표압축을 해놓고 머지소트 트리를 활용하면 어떨까 싶었지만 쿼리를 처리함에 따라 시험 점수 쌍이 늘어나는데 이때마다 업데이트를 해주어야 하므로 포기했다. 다른 방법을 찾으려고 좌표 평면에 $S\geq X$, $T\geq Y$, $S+T\geq Z$의 그림을 그렸는데 $X+Y$와 $Z$의 대소관계에 따라 영역의 모양이 달라지는 것을 확인했다. $X+Y\geq Z$라면 앞의 두 조건만 만족해도 세 번째 조건이 만족되므로 두 조건을 만족하는 쌍의 수만 구해주면 되고 $X+Y<Z$라면 $S_i+T_i\geq Z$를 만족하는 $i$ 중 $S_i<X$, $T_i<Y$ 중 하나를 만족하는 쌍의 수를 빼주면 된다는 것을 확인했다. 기준에 따라 쿼리를 두 종류로 나눈 뒤 각각의 쿼리를 기준에 따라 정렬하고 값 압축과 펜윅트리를 활용하여 답을 구했다.

'BOJ' 카테고리의 다른 글

BOJ 25414  (0) 2025.02.27
BOJ 26399  (0) 2025.02.26
BOJ 7783  (0) 2025.02.25
BOJ 19045  (0) 2025.02.25
BOJ 16531  (0) 2025.02.25