P3412 仓鼠找sugar II
P3412 仓鼠找sugar II
题目描述
小仓鼠和他的基(mei)友(zi)sugar 住在地下洞穴中,每个节点的编号为 \(1\sim n\) 间的一个整数。地下洞穴是一个树形结构(两个洞穴间距离为 \(1\))。这一天小仓鼠打算从从他的卧室 \(a\)(是任意的)走到他的基友卧室 \(b\)(还是任意的)(注意,\(a\) 有可能等于 \(b\))。然而小仓鼠学 OI 学傻了,不知道怎么怎么样才能用最短的路程走到目的地,于是他只能随便乱走。当他在一个节点时,会等概率走到这个点的母亲或者所有孩子节点(例如这个节点有一个母亲节点和两个子节点,那么下一步走到这 \(3\) 个节点的概率都是 \(\dfrac{1}{3}\)),一旦走到了他基友的卧室,就会停下。
现在小仓鼠希望知道,他走到目的地时,走的步数的期望。这个期望本来是一个有理数,但是为了避免误差,我们要求输出这个有理数对 \(998,244,353\) 取模的结果。
形式化地说,可以证明答案可以被表示为既约分数 \(\dfrac{y}{x}\),其中 \(x\not\equiv 0\pmod {998,244,353}\)。可以证明存在一个唯一的整数 \(z\)(\(0\le z\lt 998,244,353\)),使得 \(xz=y\),你只需要输出 \(z\) 的值。
小仓鼠那么弱,还要天天被 JOHNKRAM 大爷虐,请你快来救救他吧!
输入格式
第一行一个正整数 \(n\),表示这棵树节点的个数。
接下来 \(n-1\) 行,每行两个正整数 \(u\) 和 \(v\),表示节点 \(u\) 到节点 \(v\) 之间有一条边。
输出格式
一个整数,表示取模后的答案。
输入输出样例 #1
输入 #1
3
1 2
1 3
输出 #1
110916041
说明/提示
样例解释:期望的真实值为 \(\dfrac {16}{9}\)。
如果 \(a\) 是叶子,\(b\) 是根,此时期望 \(\mathbb{E}_1=1\),有 \(2\) 种情况。
如果 \(a\) 是根,\(b\) 是叶子,则 \(\displaystyle \mathbb{E}_2=\frac{1}{2}+\frac{3}{4}+\frac{5}{8}+\cdots=3\)。有 \(2\) 种情况。
如果 \(a,b\) 是不同的叶子,则 \(\mathbb{E}_3=\mathbb{E}_2+1=4\)。有 \(2\) 种情况。
如果 \(a=b\),则 \(\mathbb{E}_4=0\)。有 \(3\) 种情况。
所以答案为 \(\displaystyle \frac{2\times 1+2\times 3+2\times 4+3\times 0}{2+2+2+3}=\frac{16}{9}\)。
由于 \(110,916,041\times 9=998,244,369\equiv 16\pmod {998,244,353}\),所以输出 \(110,916,041\)。
对于 \(30\%\) 的数据,\(n\le 5\);
对于 \(50\%\) 的数据,\(n\le 5000\);
对于所有数据,\(n\le 100000\)。
\(\text{Statement fixed by @Starrykiller.}\)
思路
本题 \(n\) 的规模是 \(1e5\) ,又出现了任意点对的求值问题,肯定不能暴力枚举,肯定需要考虑算边的贡献或者点的贡献。
这里因为是路径问题,肯定优先考虑边的贡献。
那么一条边对答案的贡献 \(e_i=val_i \cdot siz_u \cdot siz_v\) 那么就要看 \(val_i\) 是啥
因为 \(u\rightarrow v\) 和 \(v \rightarrow u\) 的期望步数肯定不一样,那么一条边肯定要按照它的方向分开考虑。
假定现在是 \(u \rightarrow v\) 那么 \(val_i=E(u \rightarrow v)\) 那么贡献就算出来了
现在就要计算从 \(u \rightarrow v\) 的期望步数
有两种情况,一种是自根而下,另一种是自底而上。
那么对于节点 \(u\) ,若是自底而上,那么计算它的期望
两项分别代表:运气爆棚一步走到父节点,随机到儿子节点( \(1\) 步)再回来( \(f_v\) )再上去( \(f_u\) )
那么化简之后就是:
自根而下是同理的,只不过算这个期望的时候可以借助算过的自底而上的期望来简化计算

浙公网安备 33010602011771号