문제 설명
최초 루트 노드에 물이 존재하고 루트를 기점으로 물이 자식에게 분배된다.
그러면 기대하는 값(pi)이 0보다 큰 경우의 평균을 구하는 것이다.
i번 정점에 쌓인 물의 양의 기댓값을 Pi라 하자. 이때, Pi가 0보다 큰 정점들에 대해서 Pi들의 평균은 어느 정도가 될까?
생각한 아이디어
루트에서 부터 탐색하면서 자식에게 물의 값을 양도하도록 직접 구현했다. 하지만 FAIL
왜 Fail이 나는지 몰랐었다.
Pi가 0보다 큰 정점들에 대해서 Pi들의 평균 → pi가 0보다 큰 값인지 실제로 체크를 했다.
나의 구현에서는 root의 물의 양이 1일 때 하나의 정점에서만 pi>0 을 만족해서 물의 양도 :1, 총 점정 : 1로
1/1 = 1.0000000000 으로 출력했다. 그래서 FAIL이 난 것 같다.
리프노드가 곧 물의 이동이 멈출 때라는 것을 생각했지만 루트의 물의 양이 1이고 Leaf 노드가 2개이상일 때에는 pi>0 조건을 만족하는 정점은 1개라고 생각했다.
문제에서 수치적으로 Pi>0 큰 정점들에 대해서 라고 말해줬는데… 이상하다라고 생각했다.
기댓값이라는 사전적 정의로 보면 이러했다.
각 사건이 벌어졌을 때의 이득과 그 사건이 벌어질 확률을 곱한 것을 전체 사건에 대해 합한 값이다.
예를 들어, 주사위를 한 번 던졌을 때, 각 눈의 값이 나올 확률은 1/6이고, 주사위값의 기댓값은 각 눈의 값에 그 확률을 곱한 값의 합인
1⋅16+2⋅16+3⋅16+4⋅16+5⋅16+6⋅16=3.5
https://wikimedia.org/api/rest_v1/media/math/render/svg/68512c225071812574cdcd829b5c0175891d3d1a
그래서 문제에서 의도한 것은 전체 사건이 리프노드가 pi>0 이다라고 애기하는 것 같다…
풀이
static List<Integer>[] adj;
static final int ROOT = 1;
/**
* 리프의 갯수대로 나노 먹을 것이다.
* 하지만 root의 물의 양이 1이라면 pi가 0보다 큰 정점은 leaf 개수가 아닌 1개 인데...?
* 음.. 평균은 하나의 리프에만 기댓값이 0보다 큰 1이 한개인데...?
* 그런데 pi가 0보다 큰 정점들에 대해서 수치적으로 0보다 큰 값이 무조건적으로 리프의 개수라고 말할 수 없지 않나
* 리프에 물이 고일 것이라고 기대하는 것이지 실제 리프마다 물이 있을거라는 그것이 없자나..
*
* 기댓값이 나올 수 있는 pi가 0이 아닐 거라는 것이 := 리프노드 인갑네..
*/
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(reader.readLine());
int n = Integer.parseInt(st.nextToken());
int water = Integer.parseInt(st.nextToken());
adj = new List[n + 1];
for (int i = 1; i < n + 1; i++) {
adj[i] = new ArrayList<>();
}
for (int i = 0; i < n - 1; i++) {
st = new StringTokenizer(reader.readLine());
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
adj[a].add(b);
adj[b].add(a);
}
int leaf = 0;
for (int i = 2; i < n + 1; i++) {
if (adj[i].size() == 1)
leaf++;
}
System.out.println(String.format("%.10f", (double)water / leaf));
}
'Algorithm > 백준' 카테고리의 다른 글
백준 - 사촌 (0) | 2023.03.20 |
---|---|
백준 - 나무 재태크 (0) | 2023.03.18 |
백준 - 마법사 상어와 파이어볼 (1) | 2023.03.14 |
백준 - 단절점과 단절선 (0) | 2023.03.14 |
백준 - 미세먼지 안녕! (0) | 2023.03.13 |
댓글