#P14805. [CCPC 2024 哈尔滨站] 弹珠赛跑

[CCPC 2024 哈尔滨站] 弹珠赛跑

题目描述

弹珠赛跑是一种非常有趣的玩弹珠的方式,你今天也想尝试一下。

xx 轴负半轴有 nn 个起跑点位,第 ii 个点位的坐标为 xix_i。总共有 mm 个弹珠,其中 mm 是奇数,第 ii 个弹珠的移动速度为 viv_i。在一场比赛中,每一个弹珠都会等概率地随机选择一个起跑点位,不同的弹珠可以选到相同的点位。比赛开始时,所有弹珠同时出发,向 xx 正半轴方向一直移动。令 cic_i 为第 ii 个弹珠选择的起跑点位编号,不难得出在时间为 tt 时第 ii 个弹珠的坐标为 xci+vitx_{c_i} + v_i \cdot t

你是个独特的弹珠爱好者,并不在乎哪个弹珠最快。你只想知道这 mm 个弹珠的所有坐标的中位数恰好在原点(即 x=0x = 0)的时间点。一个长度为奇数 mm 的序列的中位数是从小到大排序后下标为 m+12\frac{m+1}{2} 的数(下标从 11 开始)。由于赛跑还没开始,弹珠的起跑点位还没有确定,所以你想知道这个答案的数学期望。为了避免实数误差,你只需要输出这个答案在 109+710^9+7 模意义下的结果(详情见输出格式)。

输入格式

第一行两个正整数 nnmm (1n,m5001 \le n, m \le 500,且 mm 为奇数),表示起跑点位个数和弹珠的个数。

第二行 nn 个整数 x1,x2,,xnx_1, x_2, \ldots, x_n (109xi<0-10^9 \le x_i < 0),表示每个起跑点位的坐标。保证所有 xix_i 互不相同。

第三行 mm 个整数 v1,v2,,vmv_1, v_2, \ldots, v_m (1vi1091 \le v_i \le 10^9),表示每个弹珠的移动速度。

输出格式

输出一行一个整数,表示答案的数学期望对 109+710^9+7 取模后的结果。

M=109+7M=10^9+7。可以证明,答案能够表示为最简分数 pq\frac p q,其中 ppqq 是正整数且 q≢0(modM)q \not\equiv 0\pmod M。则你需要输出 pq1(modM)p\cdot q^{-1}\pmod Mq1q^{-1} 表示 qq 在模 MM 意义下的乘法逆元。换句话说,输出满足 0x<M0\le x < Mxqp(modM)x\cdot q\equiv p\pmod M 的整数 xx。可以证明,符合条件的 xx 是唯一的。

2 3
-4 -5
1 2 3
250000004
3 3
-4 -5 -6
1 2 3
500000006
5 5
-4 -5 -6 -10 -2
1 2 3 2 4
434986672

提示

对于第一个样例,三个弹珠的速度分别为 1,2,31, 2, 3,考虑三个弹珠分别的初始坐标:

  • 4,4,4-4, -4, -4t=2t=2 的时候,三个弹珠的坐标分别为 2,0,2-2, 0, 2,中位数恰好在原点。
  • 4,4,5-4, -4, -5t=2t=2 的时候,三个弹珠的坐标分别为 2,0,1-2, 0, 1,中位数恰好在原点。
  • 4,5,4-4, -5, -4t=2.5t=2.5 的时候,三个弹珠的坐标分别为 1.5,0,3.5-1.5, 0, 3.5,中位数恰好在原点。
  • (4,5,5)(-4, -5, -5), (5,4,4)(-5, -4, -4), (5,4,5)(-5, -4, -5), (5,5,4)(-5, -5, -4), (5,5,5)(-5, -5, -5) 的时候同理,中位数恰好在原点的时间分别为 t=2.5t=2.5, t=2t=2, t=2t=2, t=2.5t=2.5, t=2.5t=2.5

综上,期望时间为 $\frac{2 + 2 + 2.5 + 2.5 + 2 + 2 + 2.5 + 2.5}{8} = \frac{9}{4}$,因此你需要输出 941mod(109+7)=2500000049 \cdot 4^{-1} \bmod (10^9+7) = 250000004