ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

模拟赛 26 题解

2020-11-25 20:05:03  阅读:173  来源: 互联网

标签:26 题解 可以 模拟 dfs dfn cdq cases dp


树形dp+构造+期望+停时定理+cdq分治

A.路哥

首先我们可以求出所有权值为 \(k\) 的方案数总和,再除以 \(2^{n-1}\) 就是总期望。

可以树形dp,设 \(f[i][j]\) 表示当前考虑到 \(i\) 点,所拿的总和为 \(j\) 的方案数。

这样设状态,是按照 \(dfs\) 序进行推进的,所以每次处理儿子的时候要继承父亲的方案数。

每次回溯时,要把贡献统计到父亲上面,同时也要考虑不走这条边的方案数。

B.密电

设给出数组为 \(\{b_n\}\)。

那么排完序后,一定有:\(b_1=a_1+a_2,b_2=a_1+a_3\),不确定的只只有 \(a_2+a_3\) 和后面的关系。

这时候就可以枚举 \(a_2+a_3\) 的位置,这样就求出了 \(a_1,a_2,a_3\),并且剩下的最小的一定是 \(a_1+a_4\)。

那么知道 \(a_4\) 后,就可以删除 \(a_2+a_4,a_3+a_4\),这样剩下的就是 \(a_1+a_5\) 了,归纳就能求出答案。

C.战争

停时定理和鞅,不会。

D.送信

cdq好题。

我们观察到,给定的路径如果想产生贡献,那么询问的两个端点一定在它的子树里。

这里的"子树",是指连接这两个点的极大互斥连通块。

可以通过 \(dfs\) 序对此加以限制,设询问的两个路径为 \(x_i,y_i\),其中路径 \(x_j\rightarrow y_j\) 若能够产生贡献,则需满足:

\[\begin{cases} dfn[x_i]\in[l,r]\\dfn[y_i]\in[L,R]\\t_i>t_j \end{cases} \]

其中 \([l,r],[L,R]\) 的范围可以根据 \(x_j,y_j\) 的形态来讨论,这里可以画图理解。

之后这就是一个典型的三维偏序,直接上 cdq 就好了。

trick:cdq时要查 \(x\in[l,r]\and\ y\in[L,R]\) 的数对 \((x,y)\) 的数量,但因为第二维限制用双指针维护,不好统计。可以差分后统计 \([1,l-1]\) 和 \([1,r]\) 的即可。

另外 \(y\in[L,R]\) 这一限制也可以差分后树状数组,而避免线段树。

标签:26,题解,可以,模拟,dfs,dfn,cdq,cases,dp
来源: https://www.cnblogs.com/Alansp/p/14038088.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有