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.
未完待續……
相關文章
- 第十五屆藍橋杯C++B組省賽總結C++
- 第十屆藍橋杯省賽C++B組 等差數列C++
- 第十五屆藍橋杯軟體賽省賽C/C++B 組題解C++
- 藍橋杯javaB組備賽Java
- 2022年藍橋杯C++B組國賽-試題D-最大數字C++
- 2017省賽藍橋杯B組
- 2018藍橋杯省賽B組
- 2018第九屆藍橋杯省賽C++B組【第四題:測試次數】C++
- 2013第四屆藍橋杯省賽C++B組【第六題:三部排序】C++排序
- 第十三屆藍橋杯省賽A組
- 第14屆藍橋杯B組國賽
- 藍橋杯學習路線
- 藍橋杯2015初賽生命之樹 DFS圖解圖解
- 藍橋杯__省賽__第七屆__C/C++__大學A組C++
- 藍橋杯__省賽__第八屆__C/C++__大學A組C++
- 藍橋杯__省賽__第九屆__C/C++__大學A組C++
- 2020藍橋杯競賽複習指導
- 2015年藍橋杯六屆省賽大學B組真題
- 第六屆藍橋杯省賽CC++B組C++
- 22藍帽杯初賽
- 【藍橋杯考前突擊】第十屆藍橋杯省賽C/C++大學B組 試題 D 數的分解C++
- 藍橋杯模板(二)python組Python
- 藍橋杯模板(三)python組Python
- 第十五屆藍橋杯大賽軟體賽省賽 C/C++ 大學 A 組C++
- 藍橋杯大賽——驅動程式
- 2015藍橋杯省賽javaA組-----牌型種數(填空)Java
- 第九屆藍橋杯B組省賽———乘積最大
- 第九屆藍橋杯大賽個人賽決賽(軟體類本科B組)做題筆記 mit zwei Antworten筆記MIT
- 24藍橋杯-網路安全組
- 藍橋杯
- 第十三屆藍橋杯省賽C/C++ B組C++
- [藍橋杯2018決賽]最大乘積
- 2013第四屆藍橋杯省賽C++A組【第一題:高斯日記】C++
- 【藍橋杯】計蒜客2017模擬賽A習題整理
- 第十一屆藍橋杯省賽CC++組第二場比賽C++
- 2020藍橋杯省賽B組C++(第二場)真題C++
- 2013藍橋杯題解c++A組C++
- 藍橋杯第9場小白入門賽