A:遗忘之祭仪
签到题
每次一定是拿小矩形左上角去对
如果冲突就挂了
B:客星璀璨之夜
考虑一个星撞向另一颗星的方案数有多少
乘上距离就是这颗星撞向另一颗星的贡献
最后除以所有的方案数就是期望
(新套路get)
考虑方案数怎么求
定义dp[i][j]表示 从星A撞向星B 中间的反物质行星有i颗 在星B向后 反物质行星有j颗 的方案数
考虑转移
首先保证j这颗恒星不会被其它行星消耗掉 所以首先保证j这颗恒星右边的不会撞到它
此时的转移系数为((2*j-1)*dp[i][j-1])
即在右边的所有行星中挑一个并向任意一个方向运动
注意j右边紧邻的只能向右
所以有((2*j-1))中选法
同理左边的转移一样((2*i-1)*dp[i-1][j])
根据加法原理这两个加起来就是dp[i][j]
而i左边的行星对i和j一定产生不了任何贡献
所以这一部分的方案数最后一起乘就可以了
当i等于0和j等于0时特殊计算
i等于0时
此时有两种可能:
- j中挑出一颗行星湮灭 方案数为((2*j-1)*dp[0][j-1])
- 将两颗星星直接相撞 那以后j中的行星无论如何撞都可以满足此时的要求了 方案数为(2^j*j!*dp[0][j-1])
j等于0时
方案数为((2*i-1)*dp[i-1][0])
然后就可以转移了
把dp值求出之后统计答案
如果由星A撞向星B 且x[b]>x[a] 那么显然可以直接统计 乘上距离差就可以
而如果由星A撞向星B 且x[b]<x[a]
因为dp方程是由左撞向右方 所以直接统计显然不行
发现显然从A撞向B的方案数 与从B右边的第一颗行星撞向A右边的第一颗恒星的方案数是相等的
所以转换一下坐标就可以直接计算了
最后除以所有的(2^n*n!)种方案 就是期望距离
C:割海成路之日
咕咕咕