codeforces1540B

codeforces1540B

题目:https://codeforces.com/contest/1540/problem/B

sol:

一整年没有写题回来练练手,发现啥都不会了。

可以枚举一个根 rt ,再枚举点对  (a,b) ,其中 ab;

出现逆序对需要 ba 之前出现在序列里。我们希望求出此概率 p

l=lca(a,b)

rt 走到 l 对于 p 没有影响。

考虑从 l 走到 ab :有 p0 的概率往 a 走, p0 的概率往 b 走, 12×p0 的概率走其他。

因为 ab 都是等概率的 p0p0 其实不重要。

f[x][y] 表示每次等可能的将 xy1y 先于 x 减到 0 的概率。

f[x][y]=(f[x][y1]+f[x1][y])/2 ;

枚举时每次取 p=f[dist(l,a)][dist(l,b)] 即可

效率 O(n3logn)

 

posted @   liankewei123456  阅读(54)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示