[백준 16978] 수열과 쿼리 22 #85
ghdcksgml1
started this conversation in
1일 1알고리즘
Replies: 1 comment 2 replies
-
|
세그먼트 트리도 일반 코테에서 자주 나오는 유형인가요?? |
Beta Was this translation helpful? Give feedback.
2 replies
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
아이디어
이 문제에서 k만 없었어도 난이도는 굉장히 쉬웠을 것 같다. (세그먼트 트리로 구간합만 구하면 돼서)
하지만 특정 시점에서 적용된 쿼리에 대한 구간의 합을 구해야하기 때문에
이 문제는 오프라인 쿼리로 풀어야겠다고 생각했다.
오프라인 쿼리는 다음과 같이 구현했다.
1일때 변경해야하는 쿼리와, 2일때 변경해야하는 쿼리를 각각 따로 저장해서 관리한다.
2일때 저장해놓은 구간에 대한 쿼리를 k를 기준으로 오름차순으로 정렬해준다.
그 이유는, 이렇게 정렬해서 하나씩 쿼리를 구하면, 예를들어 7번째 적용했던 1번 쿼리에서 1번째 적용했던 1번 쿼리를 구해야하는 것처럼 반대로 넘어가는 것을 막을 수 있다.
(즉, 무조건 k는 증가하는 순으로 나오기때문에 과거 시점으로 돌아가 1번 쿼리를 구할 일이 없다.)
이렇게 각각의 값을 구하면 완성!!
시간복잡도
오프라인쿼리로 풀기때문에 시간 복잡도는 k번째 조건이 없을때와 같은 O(M logN) 이다.
소스코드
크~ 점수 달다~
Beta Was this translation helpful? Give feedback.
All reactions