#CSP202609A. 流程规划(其一)

流程规划(其一)

题目来自第 43 次 CSP 认证 T1,评测使用自造高质量复刻数据。我们承认原始题面与大样例版权均归中国计算机学会(CCF)所有,因此题面与评测服务均免费对外开放。如果您认为我们侵犯了您的权益,可联系我们。

时间限制: 1.0 秒

空间限制: 512 MB

题目背景

小 P 正在评估某产品的制造流程。一件产品需要依次经过若干个制造环节,而设备状态和生产环境的变化会使实际完成时间产生波动。

在制定交付计划前,小 P 希望估算产品在规定时间内完成的概率,从而判断生产计划是否可靠。为此,他建立了一个耗时模型,并准备了一张标准正态分布的分布函数值表。由于表中只记录了有限的查表点,小 P 将使用其中位置最接近的一项估算按时完成的概率。

题目描述

制造流程共有 nn 个环节,编号从 11 到 nn。第 ii 个环节(1≤i≤n1 \le i \le n)的耗时为随机变量 TiT_i,其平均耗时为 μi\mu_i,标准差为 σi\sigma_i。各个 TiT_i 互相独立,且均服从正态分布,即 Ti∼N(μi,σi2)T_i\sim N\left(\mu_i,\sigma_i^2\right)。

整个流程的总耗时为 T=∑i=1nTiT=\sum\limits_{i=1}^{n}T_i,也服从正态分布。总耗时的平均值、方差和标准差分别为:

$$\mu=\sum_{i=1}^{n}\mu_i,\qquad \sigma^2=\sum_{i=1}^{n}\sigma_i^2,\qquad \sigma=\sqrt{\sum_{i=1}^{n}\sigma_i^2}.$$

小 P 希望估算整个流程在时间限制 mm 内完成的概率。记随机变量 YY 服从标准正态分布,并定义 Φ(x)=P(Y≤x)\Phi(x)=P(Y\le x),即 YY 的取值不超过 xx 的概率。令

z=m−μσz=\dfrac{m-\mu}{\sigma}

则整个流程在时间限制 mm 内完成的概率为 P(T≤m)=Φ(z)P(T\le m)=\Phi(z)。

小 P 有一张包含 kk 个查表点的函数值表。第 ii 个查表点(1≤i≤k1 \le i \le k)记录 xix_i 及其对应的函数值 Φ(xi)\Phi(x_i)。表中的 xix_i 和 Φ(xi)\Phi(x_i) 均严格递增:

$$\left(x_1,\Phi(x_1)\right), \left(x_2,\Phi(x_2)\right),\ldots, \left(x_k,\Phi(x_k)\right).$$

题目保证存在整数 ii(1≤i<k1 \le i < k),满足 xi≤z≤xi+1x_i \le z \le x_{i+1}。小 P 在这两个查表点中选择横坐标距离 zz 更近的一项,并将该项对应的函数值作为按时完成概率的估算结果。若 zz 到两者的距离相等,则选择横坐标较小的 xix_i。

试计算小 P 对 Φ(z)\Phi(z) 的估算结果。

输入格式

从标准输入读入数据。

输入的第一行包含空格分隔的三个正整数 n,m,kn,m,k,分别表示制造环节数、时间限制和函数值表中的查表点数。

输入的第二行包含空格分隔的 nn 个实数 μ1,μ2,…,μn\mu_1,\mu_2,\ldots,\mu_n,表示各环节的平均耗时。

输入的第三行包含空格分隔的 nn 个实数 σ1,σ2,…,σn\sigma_1,\sigma_2,\ldots,\sigma_n,表示各环节耗时的标准差。

输入的第四行包含空格分隔的 kk 个实数 x1,x2,…,xkx_1,x_2,\ldots,x_k。

输入的第五行包含空格分隔的 kk 个实数 Φ(x1),Φ(x2),…,Φ(xk)\Phi(x_1),\Phi(x_2),\ldots,\Phi(x_k)。这些数是对应函数值四舍五入到小数点后三位的结果。

输出格式

输出到标准输出。

输出函数值表中被选中的函数值,表示小 P 得到的估算结果。输出时须保持该函数值在输入中的三位小数格式不变,原样输出(包括小数部分末尾的 00)。

3 10 5
2.000 3.000 4.000
0.600 0.800 1.000
0.000 0.300 0.600 0.900 1.000
0.500 0.618 0.726 0.816 0.841
0.726

样例 1 解释

编号为 1,2,31,2,3 的环节的总平均耗时为:

μ=2.000+3.000+4.000=9.000.\mu=2.000 + 3.000 + 4.000 = 9.000.

总耗时的方差和标准差分别为:

$$\sigma^2=0.600^2 + 0.800^2 + 1.000^2 = 2.0,\qquad \sigma=\sqrt{2}.$$

因此,z=10−9.0002≈0.707z=\dfrac{10 - 9.000}{\sqrt{2}}\approx 0.707。

如图所示,zz 位于 0.6000.600 和 0.9000.900 之间,并且更接近 0.6000.600。函数值表中 0.6000.600 对应的函数值为 0.7260.726,因此输出 0.7260.726。

img

1 5 4
4.000
2.000
0.000 0.400 0.600 1.000
0.500 0.655 0.726 0.841
0.655

样例 2 解释

此时,z=5−4.0002.000=0.5z=\dfrac{5 - 4.000}{2.000}=0.5。

zz 恰好位于 0.4000.400 和 0.6000.600 的中间。根据题目规定,应选择较小的 0.4000.400。函数值表中 0.4000.400 对应的函数值为 0.6550.655,因此输出 0.6550.655。

1 1 3
1.000
1.000
0.000 0.200 0.400
0.500 0.579 0.655
0.500

样例 3 解释

此时,z=1−1.0001.000=0z=\dfrac{1 - 1.000}{1.000}=0,因此选择 x1=0.000x_1=0.000 对应的函数值 0.5000.500。

虽然 0.5、0.50 和 0.500 表示的数值相等,但本题要求保持输入中的三位小数格式不变,因此必须输出 0.500;输出 0.5 或 0.50 均为错误。

子任务

50%50 \% 的测试点满足:n=1n=1;

全部的测试点满足:

  • 1≤n,m≤1001 \le n,m \le 100;
  • 2≤k≤202 \le k \le 20;
  • 对于每个环节 ii(1≤i≤n1 \le i \le n),均有 0<μi≤100, 0<σi≤100 < \mu_i \le 100,\ 0 < \sigma_i \le 10;
  • 0≤x1<x2<⋯<xk≤10 \le x_1 < x_2 < \cdots < x_k \le 1;
  • $0.500 \le \Phi(x_1) < \Phi(x_2) < \cdots < \Phi(x_k) \le 0.841$;
  • 输入中的所有实数均以恰好三位小数的形式给出;
  • 存在整数 ii(1≤i<k1 \le i < k),使得 xi≤z≤xi+1x_i \le z \le x_{i+1}。

提示

请注意输出格式,输出的函数值必须保留三位小数。也可以将输入中的 Φ(xi)\Phi(x_i) 作为字符串读入,并将选中的字符串原样输出。