CF 1076E Vasya과 나무 (DFS + 펜윅 트리) 해결하기

링크 : http://codeforces.com/problemset/problem/1076/E

 

문제의 의미 : 당신에게 나무를주는 1은 루트 노드, 초기 중량 값의 모든 노드는 작업의 m 번호, 아들 V의 노드와 모든 거리 자체가 노드 D를 초과하지 않는 각이있다, 0 , m 동작 시간 후, 각 노드의 가중치에 대한 출력 값을 가중치 X, Q 합계.

해결 방법 :이 순서 인 경우, 직접 펜윅 트리를 할 수 있지만,이 나무이다, 그래서 우리는 시퀀스로 변환하는 방법을 찾을 수 있습니다. 우리는 먼저 각각의 방법을 기록하는 서브 트리의 노드가 순서 DFS에 뿌리를 확인하는 서브 트리의 크기 범위 노드 깊이를 갖는, 시퀀스, 각 노드의 서브 트리 DFS의 크기 및 깊이를 결정 이 경우 펜윅 트리가 유지 사용할 수 있습니다. 그 후, 우리는 깊이 순서, 큰 작업에 그 깊이 우선 순위 처리를 내림차순으로 각 작업에 영향을 미칠 수있다. 현재의 깊이를 설정하는 것은 지금 현재 계산 된 동작보다 큰 깊이의 영향에 대한 모든 동작을 가정하여 계산된다. 현재의 깊이가 작동 이제 미치는 영향보다 작 으면, 이제 모든 작업의 ​​깊이의 전반적인 동작은, 지금 가중치를 계산 모든 노드의 다음 깊이를 완료에 영향을 줄 수 있습니다 설명했다. 각 메시지는 읽기 작업, 작업에 의해 생성 된 영향이 미치는 영향은 이제 노드 무게 깊이가 계산되어 있기 때문에, 그래서이 동작 노드의 운영에 넣어, 펜윅 트리 유지 보수를했다 모든 서브 트리의 루트 플러스 동작의 값은 이전에 계산 된 답변에 영향을 미치지 않는다. 얕은 깊이 계산에 깊은에서 모든 작업의 ​​완료 후에 응답 할 수 있습니다.

 

추천

출처www.cnblogs.com/Yokel062/p/11720881.html