LINK:仓鼠找sugar II

以前做过类似的期望题目 加上最后的树形dp不算太难 还是可以推出来的。

容易发现 当固定起点和终点的时候 可以先固定根 这样就不用分到底是正着走还是倒着走了。

1为根 我们要求 x到y的期望步数.

由于期望的线性性 可以设出f[x]表示x到父亲的期望步数 g[x]表示父亲到儿子的期望步数。

很容易得到转移 不再赘述.

然后暴力找这条路径累加答案即可。

然后 就可以n^3的统计答案了 倍增优化一下就是n^2log的 考虑以每个点统计答案就发现可以n^2统计答案。

最后考虑树形dp 其实没必要每次统计一边答案 直接dp做。

总思想就是先统计所有x子树内所有点到x的贡献 x到自己子树内所有点的贡献。

最后是 x的子树互相跑的贡献 就可以做到O(n)了。

const int MAXN=100010;
int n,len;
int lin[MAXN],sz[MAXN],ver[MAXN<<1],nex[MAXN<<1],du[MAXN];
ll f[MAXN],g[MAXN],w[MAXN],s[MAXN],ans;
inline void add(int x,int y)
{
ver[++len]=y;
nex[len]=lin[x];
lin[x]=len;++du[y];
}
inline ll ksm(ll b,ll p)
{
ll cnt=1;
while(p)
{
if(p&1)cnt=cnt*b%mod;
b=b*b%mod;
p=p>>1;
}
return cnt;
}
inline void dfs(int x,int fa)
{
f[x]=du[x];
go(x)if(tn!=fa)dfs(tn,x),f[x]=(f[x]+f[tn])%mod;
}
inline void dfs1(int x,int fa)
{
go(x)
if(tn!=fa)
{
g[tn]=(g[x]+f[x]-f[tn]+mod)%mod;
dfs1(tn,x);
}
}
inline void dp(int x,int fa)
{
sz[x]=1;w[x]=f[x];//w[x]表示x子树内的所有点走向x的父亲的期望步数.
s[x]=g[x];//s[x]表示x的父亲走向x子树内所有点的期望步数.
ll cnt1=0,cnt2=0,ss=0;
go(x)
{
if(tn==fa)continue;
dp(tn,x);
//统计子树两边互走的情况.
ans=(ans+cnt1*sz[tn]+s[tn]*ss)%mod;
ans=(ans+cnt2*sz[tn]+w[tn]*ss)%mod;
//先统计所有点到x的贡献.
ans=(ans+w[tn])%mod;
cnt1=(cnt1+w[tn])%mod;
w[x]=(w[x]+w[tn]+f[x]*sz[tn])%mod;
//再统计x到所有点的贡献.
ans=(ans+s[tn])%mod;
s[x]=(s[x]+s[tn]+g[x]*sz[tn])%mod;
cnt2=(cnt2+s[tn])%mod;
ss+=sz[tn];sz[x]+=sz[tn];
}
}
int main()
{
freopen("1.in","r",stdin);
get(n);
rep(2,n,i)
{
int x,y;
get(x);get(y);
add(x,y);add(y,x);
}
dfs(1,0);dfs1(1,0);
//rep(1,n,i)put(g[i]);
dp(1,0);putl(ans*ksm((ll)n*n%mod,mod-2)%mod);
return 0;
}

luogu P3412 仓鼠找sugar II 期望 树形dp的更多相关文章

  1. Luogu P3412 仓鼠找$sugar$ $II$

    Luogu P3412 仓鼠找\(sugar\) \(II\) 题目大意: 给定一棵\(n\)个点的树, 仓鼠每次移动都会等概率选择一个与当前点相邻的点,并移动到此点. 现在随机生成一个起点.一个终点 ...

  2. 洛谷P3412 仓鼠找$Sugar\ II$题解(期望+统计论?)

    洛谷P3412 仓鼠找\(Sugar\ II\)题解(期望+统计论?) 标签:题解 阅读体验:https://zybuluo.com/Junlier/note/1327573 原题链接:洛谷P3412 ...

  3. P3412 仓鼠找sugar II

    思路 挺神的概率期望.. 好吧是我太弱了,完全没有往那里想 注意期望是具有线性性的,一条路径的期望可以变成每条边的期望求和 概率是某件事发生的可能性,期望是某件事确定发生的代价 首先没有终点的条件并不 ...

  4. [Luogu 3398] 仓鼠找sugar

    [Luogu 3398] 仓鼠找sugar 又是 LCA- 前两天死活写不过的一个题今天终于顺手切了. 思路嘛参考了一楼题解. 就是说,对于 a, b, c, d 四个点, 令 x = LCA(a, ...

  5. [luogu3412]仓鼠找sugar II

    题面在这里 题意 给定一棵树(\(n\le10^5\)),仓鼠随机选择起点和终点,之后从起点开始随机游走,每次都会等概率地选择和其相邻的任一道路,直到到达终点,求到达终点时步数的期望 sol 因为这一 ...

  6. luogu P3398 仓鼠找sugar [LCA]

    题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a)到餐厅(b),而他的基友同时要从他的卧室(c) ...

  7. 仓鼠找sugar II

    题目描述 小仓鼠的和他的基(mei)友(zi)sugar住在地下洞穴中,每个节点的编号为1~n.地下洞穴是一个树形结构.这一天小仓鼠打算从从他的卧室(a,是任意的)他的基友卧室(b,还是任意的).(注 ...

  8. 【luogu P3398 仓鼠找sugar】 题解

    题目链接:https://www.luogu.org/problemnew/show/P3398 辣鸡树剖1300ms 倍增大法吼啊 #include <cstdio> #include ...

  9. Luogu P3398 仓鼠找sugar

    这还是一道比较好的树剖题(去你的树剖,LCA即可) 这里主要讲两种思路,其实都是很基本也很经典的 1 树链剖分 还是先讲一下这种算法吧,虽然写起来很烦(不过感觉写多了就习惯了,而且还有一种莫名的快感) ...

随机推荐

  1. [POJ1852] Ants(思维题)

    题干 An army of ants walk on a horizontal pole of length l cm, each with a constant speed of 1 cm/s. W ...

  2. Node js 入门指南(1)

    目录 Node Js 定义 特点 Node使用方式 Tip: 使用导出文件的注意事项 Node 内置模块 http 模块 定义 使用方法 fs 模块 定义 使用方法 读取文件方式 同步读取 异步读取 ...

  3. postman 进阶技巧

    cookie 清除缓存 code 生成接口自动化测试脚本 响应部分 pretty 响应以json或xml显示 raw 响应以文本显示 preview 以HTML网页行驶显示 断言 断言:用于判断接口请 ...

  4. Django开篇 - Web应用

    一 Web应用的组成 接下来我们学习的目的是为了开发一个Web应用程序,而Web应用程序是基于B/S架构的,其中B指的是浏览器,负责向S端发送请求信息,而S端会根据接收到的请求信息返回相应的数据给浏览 ...

  5. python基础之打/解包及运算符与控制流程

    python基础之打/解包及运算符与控制流程 python中的解压缩(即序列类型的打包和解包) python提供了两个设计元祖和其他序列类型的处理的便利,也就是自动打包与自动解包功能,比如: data ...

  6. Tomcat更改错误页面指向,改变404,500错误页面

    在公司工作了一段时间,也被安排做了一个App,而且后台也是我来写和布置的,由于一次安全检查,需要我把tomcat默认页(管理页面)关闭,于是我只能进行默认指向变更,但是后面我又想到要是用户输入不存在的 ...

  7. 数据可视化实例(九): 边缘箱形图(matplotlib,pandas)

    https://datawhalechina.github.io/pms50/#/chapter7/chapter7 边缘箱形图 (Marginal Boxplot) 边缘箱图与边缘直方图具有相似的用 ...

  8. Vue中token的实现

    在学习vue的过程中,正好项目中做的web系统对安全性有要求 转载自https://www.jianshu.com/p/d1a3fb71eb99 总:通过axios,vuex,及自定义的方法实现.以下 ...

  9. idea 安装 codota 插件

    为抄代码而生的插件哇,码农们的知心姐姐!!!

  10. P4158 [SCOI2009]粉刷匠(洛谷)

    今天A了个紫(我膨胀了),他看起来像个贪心一样,老师说我写的是dp(dp理解不深的缘故QWQ) 直接放题目描述(我旁边有个家伙让我放链接,我还是说明出处吧(万一出处没有了)我讲的大多数题目都是出自洛谷 ...