bzoj#P1865. Pku2057 The Lost House
Pku2057 The Lost House
蜗牛的房子遗失在了一棵树的某个叶子结点上,它要从根结点出发开始寻找它的房子。有一些中间结点可能会住着一些虫子,这些虫子会告诉蜗牛它的房子是否在以这个中间结点为根的子树上,这样蜗牛就不用白跑路了。当然,如果有些结点没有住着虫子的话,那么可怜的蜗牛只有靠自己决定访问顺序来探索了。假设蜗牛走过一条边的耗费都是 ,且房子遗失在每个叶子结点的概率都是相等的,那么请问蜗牛找到他的房子的最小数学期望值?
例如在下面的这棵树当中:
蜗牛从根结点 出发开始寻找它的房子,它的房子可能遗失在 。在结点 上住着一只虫子,它会告诉蜗牛,以 为根的子树上是否有蜗牛的房子。蜗牛有两种走法。蜗牛可以先访问 ,如果它在那儿不能找到房子,那么它要回到根结点 ,再通过 来访问结点 (或 ),如果还是不能找到它的房子,那么它又要回到结点 ,再去访问结点 (或 )。在这种走法中,当房子分别位于 的时候,蜗牛需要走的步数分别是 ,期望值是 。显然,这种走法没有充分发挥虫子在这里起到的作用。在另一种走法中,蜗牛先访问结点 ,它可以从住在 上的虫子那里得知它的房子是否存在于 或 的信息。在这种走法中,当房子分别位于 的时候,蜗牛需要走的步数分别是 ,期望值是 。这种走法合理的利用了虫子提供的信息,得到了更优的数学期望值。
输入格式
输入包含多组测试数据。
每个数据以一行开始,其中包含一个整数 ,表示树中点的数量。然后按照 行描述 个点。为了方便起见,我们将所有的点从 到 编号。用 编号的点总是树的根节点。这 行中的第 行用数字 描述点。每行由一个整数和一个大写字符Y
或N
组成,用一个空格分隔,表示父亲的编号以及是否存在虫子(Y
表示存在,而 N
表示不存在)。一个点的父亲是指该点与编号为 的点之间最短路径上的与该点相邻的点。在上图中,点 或 的父亲是点 ,而点 或 的父亲是点 。对于父亲 ,此整数为 ,表示它没有父亲。示例输入中的第一组描述了上图。
的测试数据表示输入结束,不应进行处理。
输出格式
每组测试数据输出一行。
该行包含一个浮点数,小数点后保留四位数字,这是数学期望值。
样例
5
-1 N
1 N
1 Y
3 N
3 N
10
-1 N
1 Y
1 N
2 N
2 N
2 N
3 N
3 Y
8 N
8 N
6
-1 N
1 N
1 Y
1 N
3 N
3 N
0
3.0000
5.0000
3.5000
数据规模与约定
对于所有数据,,。( 是每个节点的分叉数。)
题目来源
ACM BeiJing2004