2020年7月蓝桥杯初赛 C++B组(学习笔记3)

C题:合并检测

问题描述:

A 国准备给大量民众进病毒核酸检测。然而,用于检测的试剂盒紧缺。
为了解决这一困难,科学家想了一个办法:
合并检测。即将从多个人(k个)采集的标本放到同一个试剂盒中进行检测。如果结果为阴性,则说明这 k
个人都是阴性,用一个试剂盒完成了 k 个人的检测。
如果结果为阳性,则说明至少有一个人为阳性,需要将这 k 个人的样本全部重新独立检测(从理论上看,
如果检测前 k-1 个人都是阴性可以推断出第 k 个人是阳性,但是在实际操作中
不会利用此推断,而是将 k 个人独立检测),加上最开始的合并检测,一共使用
了 k + 1 个试剂盒完成了 k 个人的检测。
A 国估计被测的民众的感染率大概是 1%,呈均匀分布。请问 k 取多少能
最节省试剂盒?

思路:

设检测人数为n、k个人放到一个试剂盒检测、感染率为p
第一种:都没病,n/k,向上取整,n/k+1。由题意得知n很大,1可以省略,为n/k
第二种;感染的人恰好在n/k个试剂盒里的其中一个,这k个人差不多都是感染人,要多检测 np 次。
第三种情况:感染的人被平均分配,到n/k个试剂盒里,要(n/k)* p * k * k 次,即多检测 npk 次。
三种情况加起来,
sum=n/k+np+npk;

对k求导:
sum ’ = -n/k^2+0+np;

-n/k^2+0+np>=0 才能取到最小值
解得:
k^2>=100

答:k最少取10.

©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页