博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
235D Graph Game
阅读量:6925 次
发布时间:2019-06-27

本文共 1547 字,大约阅读时间需要 5 分钟。

题目大意

分析

我们先考虑它是树的情况

我们设$event(x,y)$表示删除点x是y与x联通这件事对答案贡献的期望

我们设x到y这一条链的长度为$len$,$x$和$y$所属联通块的大小为$n$

则我们可以猜测$event$的值为$\frac{1}{len}$

我们可以用数学归纳法证明

我们知道直接选到$x$的概率为$\frac{1}{n}$

先选到其它点再通过若干步选到x的概率为$\frac{n-len}{n} * \frac{1}{len}$

由此得证

于是我们在考虑它是基环树的情况

我们不难发现对于不经过环的路径没有影响

而其它路径我们把它不经过环的那些距离设为$x$,经过环的两条路分别为$y$和$z$

$event(x,y)$发生的概率实际上就是这两条路中$x$是任意一条路上第一个被删除的结点的概率

我们再容斥一下就可以得到$event(x,y) = \frac{1}{x+y} + \frac{1}{x+z} - \frac{1}{x+y+z}$

代码

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;int n,m,dep[5000],id[5000],cnt,sum,acc[5000],lca[3020][3020],f[5000];int dfn[5000],low[5000],ist[5000],belong[5000],tot[5000],maxid;double Ans;stack
a;vector
v[5000];inline void tarjan(int x,int fa){ dfn[x]=low[x]=++cnt; a.push(x); ist[x]=1; for(int i=0;i
1)dfs(v[x][i],x); }}int main(){ int i,j,k,x,y; scanf("%d",&n); for(i=1;i<=n;i++){ scanf("%d%d",&x,&y); x++,y++; v[x].push_back(y); v[y].push_back(x); } for(i=1;i<=n;i++) if(!dfn[i])tarjan(i,0); for(i=1;i<=n;i++) if(tot[belong[i]]>1){ id[i]=1; maxid=tot[belong[i]]; dfs(i,0); break; } for(i=1;i<=n;i++) for(j=1;j<=n;j++){ if(acc[i]==acc[j])Ans+=1.0/(dep[i]+dep[j]-2*dep[lca[i][j]]+1); else { int x=dep[i]+dep[j],y=abs(id[acc[i]]-id[acc[j]])-1,z=maxid-y-2; Ans+=1.0/(x+y)+1.0/(x+z)-1.0/(x+y+z); } } printf("%0.7lf\n",Ans); return 0;}

转载于:https://www.cnblogs.com/yzxverygood/p/10406215.html

你可能感兴趣的文章
最简单的基于FFMPEG的转码程序
查看>>
4月11日项目管理师作业
查看>>
springmvc整合mybatis框架源码 bootstrap html5
查看>>
Linux基础服务之FTP
查看>>
『中级篇』Dockerfile实战(19)
查看>>
配置linux IP
查看>>
lnmp安装---源码安装mysql5.6 -- nginx -- php -- memached
查看>>
实时同步inotify+rsync的简单部署
查看>>
MogileFS
查看>>
两个java客户端程序
查看>>
数据结构和算法分析之线性表
查看>>
理解volatile
查看>>
zabbix管理与使用
查看>>
给UILabel添加边框和圆角
查看>>
通过selenium模拟键盘输入链接整理
查看>>
iOS 登录页面设计
查看>>
特殊权限set_uid set_gid stick_bit 软/硬链接文件
查看>>
企业分布式SpringCloud+SpringBoot+Mybatis+shiro+微服务 技术分享
查看>>
hibernate 查询条件 对象expression
查看>>
分布式事务
查看>>