페이지를 불러오는 중…
해결한 사람
1
명
정답률
100.00
%
시간 제한
2000
ms
메모리 제한
2048
MB
개의 노드로 이루어진 트리를 생각해보자. 각 노드는 부터 까지 순서대로 번호가 매겨져 있다. 노드 은 루트이다. 루트를 제외한 모든 노드는 하나의 부모가 있다. 인 모든 에 대해서, 노드 의 부모는 노드 이고, 이다. 이라고 하자.
어떤 노드 ()에 대해서, 의 서브트리는 다음과 같은 노드들의 집합이다.
다음 그림은 개의 노드로 이루어진 트리의 예를 보여주고 있다. 각각의 화살표는 노드를 그 부모와 연결한다. 루트는 부모가 없으므로 예외이다. 노드 의 서브 트리는 노드 이다. 노드 의 서브트리는 이 트리의 모든 개의 노드이다. 노드 의 서브트리는 노드 로만 이루어져 있다.

각 노드는 음이 아닌 정수 가중치를 갖고 있다. 노드 ()의 가중치를 로 표현하자.
당신이 할 일은 두 양의 정수 로 이루어진 질의 개를 처리하는 것이다. 질의에 대한 답을 다음과 같이 계산해야 한다.
트리의 각 노드마다 정수값인 계수를 할당해보자. 노드들에 할당된 계수들을 로 표현할 수 있다. ()는 노드 에 할당된 계수이다. 이 수열을 계수 수열이라고 부르자. 계수 수열은 음수, , 양수를 모두 포함할 수 있음에 유의하자.
질의 에 대해서 계수 수열이 올바르려면 모든 노드 ()에 대해서 다음 조건이 만족되어야 한다: 노드 의 서브트리에 포함된 모든 노드의 계수의 합이, 이상 이하여야 한다.
주어진 계수 수열 에서, 노드 의 비용은 인데, 는 의 절대값이다. 마지막으로, 전체 비용은 모든 노드의 비용의 합이다. 당신이 할 일은, 각각의 질의에 대해서, 올바른 계수 수열에서 얻을 수 있는 최소 전체 비용을 구하는 것이다.
어떤 질의에 대해서도 최소한 하나의 올바른 계수 수열이 존재한다는 것을 보일 수 있다.
다음 두 함수를 구현해야 한다.
void init(std::vector<int> P, std::vector<int> W)
long long query(int L, int R)
init이 호출된 다음 번 호출된다.| Subtask | Score | Additional Constraints |
|---|---|---|
| 1 | ; 인 각 에 대해서 | |
| 2 | ; | |
| 3 | ; | |
| 4 | 인 각 에 대해서 | |
| 5 | 인 각 에 대해서 | |
| 6 | ||
| 7 | 추가적인 제약 조건이 없다. |
다음 호출을 생각해보자.
init([-1, 0, 0], [1, 1, 1])
이 트리는 개의 노드로 구성되어 있는데, 루트와 루트의 자식 개이다. 모든 노드는 가중치 이다.
query(1, 1)
질의 이 주어지면, 이 질의는 모든 서브트리의 계수의 합이 이라는 뜻이 된다. 계수 수열이 이라고 생각해보자. 트리와 이에 대응하는 계수가 (색칠한 직사각형) 아래 그림에 있다.

각각의 노드 에 대해서 (), 의 서브트리의 모든 노드의 계수의 합은 이다. 따라서, 이 계수 수열은 올바르다. 전체 비용은 다음과 같이 계산할 수 있다.
| 노드 | 가중치 | 계수 | 비용 |
|---|---|---|---|
| 0 | 1 | -1 | |
| 1 | 1 | 1 | |
| 2 | 1 | 1 |
따라서 전체 비용은 이다. 이 계수 수열이 유일한 올바른 계수 수열이므로, 리턴값은 이어야 한다.
query(1, 2)
이 질의에 대한 최소 전체 비용은 인데, 계수 수열이 일 때이다.
N
P[1] P[2] ... P[N-1]
W[0] W[1] ... W[N-2] W[N-1]
Q
L[0] R[0]
L[1] R[1]
...
L[Q-1] R[Q-1]
와 는 () 번째로 호출된 query의 파라미터이다.
입력의 두번째 줄에 오직 개의 정수만 있다는데 유의하자. 샘플 그레이더는
의 값을 읽지 않기 때문이다.
A[0]
A[1]
...
A[Q-1]
는 () 번째로 호출된 query의 리턴값이다.
3
0 0
1 1 1
2
1 1
1 2
3
2
International Olympiad in Informatics (IOI) 2024, official task package and official Korean translation.
Reporch에서 한국어 번역, 수식 표기, 이미지 호스팅 및 형식을 수정했습니다.
로그인 상태를 확인하는 중입니다.