LINK:仓鼠找sugar II 以前做过类似的期望题目 加上最后的树形dp不算太难 还是可以推出来的. 容易发现 当固定起点和终点的时候 可以先固定根 这样就不用分到底是正着走还是倒着走了. 1为根 我们要求 x到y的期望步数. 由于期望的线性性 可以设出f[x]表示x到父亲的期望步数 g[x]表示父亲到儿子的期望步数. 很容易得到转移 不再赘述. 然后暴力找这条路径累加答案即可. 然后 就可以n^3的统计答案了 倍增优化一下就是n^2log的 考虑以每个点统计答案就发现可以n^2统计答案.…
Luogu P3412 仓鼠找\(sugar\) \(II\) 题目大意: 给定一棵\(n\)个点的树, 仓鼠每次移动都会等概率选择一个与当前点相邻的点,并移动到此点. 现在随机生成一个起点.一个终点(可能相同). 仓鼠希望知道它从起点走到终点的期望步数是多少. 数据范围: 对于\(30\%\),\(n\leq 5\) 对于\(60\%\),\(n\leq 5\times 10^3\) 对于\(100\%\),\(n \leq 7\times 10^6\) 请将输出答案(一个分数)模上\(998…
洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 仓鼠找sugar II 好像只有洛谷有诶... 日常吐槽 这个期望题开发新思维方式还是比较好的... 毕竟还是很难想的...鸣谢\(fdfDarkfire\)教我做这个题! 题解来了 很容易发现答案就是\(\dfrac{\sum_{i=1}^{n}\sum_{i=1}^{n}dis[i][j]}{…
思路 挺神的概率期望.. 好吧是我太弱了,完全没有往那里想 注意期望是具有线性性的,一条路径的期望可以变成每条边的期望求和 概率是某件事发生的可能性,期望是某件事确定发生的代价 首先没有终点的条件并不好做,可以转化成有终点的条件 把根假设成终点,设f(x)是向父亲前进一步的期望移动次数\(f(x)=1+\sum_{v\in son[x]} \frac{1}{d[x]}f(v)\)(后面一部分是指走到子节点再走回来) 变形得到\(f(x)=d[x]+\sum_{v\in son[x]}f(v)\)…
[Luogu 3398] 仓鼠找sugar 又是 LCA- 前两天死活写不过的一个题今天终于顺手切了. 思路嘛参考了一楼题解. 就是说,对于 a, b, c, d 四个点, 令 x = LCA(a, b), y = LCA(c, d), 两条路径有交叉,当且仅当 c, d 至少一个在 x 的子树下,且 a, b 至少一个在 y 的子树下. 由于我是 HLD 求的 LCA,第一遍 DFS 时顺手把子树大小求了,后边判断在不在一棵子属下的时候就可以很方便了. 就这样. #include <algor…
题面在这里 题意 给定一棵树(\(n\le10^5\)),仓鼠随机选择起点和终点,之后从起点开始随机游走,每次都会等概率地选择和其相邻的任一道路,直到到达终点,求到达终点时步数的期望 sol 因为这一道题中的起点和终点都是不确定的,不好统计 于是先考虑终点固定的情况,此时我们把终点当作整棵树的\(root\),在\(O(n)\)算法之前的陈述中,直接以根节点代指终点,不做说明 那么设\(f[x]\)表示节点\(x\)向根节点方向(即父亲方向)移动一步的概率 我们可以推出如下式子: 对于叶子节点:…
题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c)到图书馆(d).他们都会走最短路径.现在小仓鼠希望知道,有没有可能在某个地方,可以碰到他的基友? 小仓鼠那么弱,还要天天被zzq大爷虐,请你快来救救他吧! 输入输出格式 输入格式: 第一行两个正整数n和q,表示这棵树节点的个数和询问的个数. 接下来n-1行,每行两个正整数u和v,表示节点u到节点v之…
题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a,是任意的)他的基友卧室(b,还是任意的).(注意,a有可能等于b.)然而小仓鼠学OI学傻了,不知道怎么怎么样才能最短的走到目的地.于是他只能随便乱走.当他在每一个节点时,等概率到这个点的母亲或者所有孩子节点(例如这个节点有一个母亲节点和两个子节点,那么下一步走到这3个节点的概率都是1/3).一但走到了他基友的卧室,就会停下. 现在小仓鼠希望知道…
题目链接:https://www.luogu.org/problemnew/show/P3398 辣鸡树剖1300ms 倍增大法吼啊 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int maxn = 550000; const int maxlog = 20; int n, m, root, f…
这还是一道比较好的树剖题(去你的树剖,LCA即可) 这里主要讲两种思路,其实都是很基本也很经典的 1 树链剖分 还是先讲一下这种算法吧,虽然写起来很烦(不过感觉写多了就习惯了,而且还有一种莫名的快感),但是思路好想啊! 我们可以把\(a \to b\)的路径上的点权都加上1,然后把\(c \to d\)的路径上的点权都加上1 然后就很简单了,就是查询这棵树中有没有点权为2的点. 熟悉线段树的就可以秒了,我们只需要建一棵维护最大值的segtree即可 CODE #include<cstdio>…