DTOJ 4614. problem B

题意

有两个点集 S , T S,T S,T, $\quad \forall x \in S, y \in T $, x , y x,y x,y 之间有 1 2 \frac{1}{2} 21概率存在一条边。

现在任意从 S , T S,T S,T中各随机挑选一个点,问这两个点之间的期望距离。

若不连通,则距离为 0 0 0

输出期望距离在模 P P P 域下的值,保证 P P P 是质数。

对于 30 % 30\% 30% 的数据,满足 1 ≤ n , m ≤ 4 1 \le n,m \le 4 1n,m4

对于 50 % 50\% 50% 的数据,满足 1 ≤ n , m ≤ 30 1 \le n,m \le 30 1n,m30

对于 20 % 20\% 20% 的数据,满足 1 ≤ n , m ≤ 50 , p = 1000000007 1 \le n,m \le 50 , p= 1000000007 1n,m50,p=1000000007

对于 100 % 100\% 100% 的数据,保证 1 ≤ n , m ≤ 100 , 772001 ≤ p ≤ 1000000007 1 \le n,m \le 100, 772001 \le p \le 1000000007 1n,m100,772001p1000000007 ,保证 p p p为质数。

题解

其实想法很自然啊,不知道为什么考场上没有想出来。
因为A或B中的每个点都是等价的,故转化为A中1号点到B中1号点最短路的期望,再把期望转化为方案数会方便一点。
直接从A中1号点开始考虑,如果与B中1号点有连边,则距离为1,否则可到达B中的一些点,变为从这些点走到终点的最短路。考场上一直在想边会重复考虑就自闭了,其实求最短路就是bfs的过程,又边只会在A,B集合之间,故直接对于当前可走的点把连向对面的所有点都考虑上,这样之前被考虑过的点就不会有新的连边了。由此应该想到DP,记 f [ i ] [ j ] [ k ] [ 0 / 1 ] f[i][j][k][0/1] f[i][j][k][0/1]为A、B中已分别有i,j个点被到达,目前能往后走的有k个点,在A/B,乘上组合数转移即可(其实就是利用点的等价记录bfs过程的状态),效率 O ( n 4 ) O(n^{4}) O(n4) (毒瘤数据范围害我卡常卡到自闭)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值