第十一届蓝桥杯b组省赛 C.合并检测(内附详细的样例)
解析:
挺容易理解错的一道题。。。k并不是总人数,只是分组人数。
括号内的一定要看。。
举个例子吧。假设一共100个人。百分之一,那么100个人中只有一个人感染。
1:100%k==0
k=10。
那么我们需要取10次(100/10)。最坏情况,是在最后一组找到了感染者,那么前9次,用了9个试剂盒,无阳性,第十次,先用1个试剂盒,发现阳性,接下来对10个人都进行一次,又用了10个试剂盒,一共是9+1+10==20。即(100/k+k)。
2:100%k!=0
k=49
可以分成2,49,49三组。最坏情况,是在49 那一组发现了感染者。所以对前两组,用了2个试剂盒,无阳性。第三组,1个试剂盒,发现阳性,全测,49个
一共是:2+1+49==52。推出公式:(100/k+k+1)
此题答案为10
代码:
#include<bits/stdc++.h> #include<cmath> #include<map> #define pb push_back using namespace std; typedef long long ll; const int maxn=2e5+10; int mp[40][40]; int f[40][40]; int n,m; int main() { int minn=999999; int ans; for(int i=1;i<=100;i++) { int md; if(100%i!=0) { md=100/i+i+1; } else{ md=100/i+i; } if(md<minn) { minn=md; ans=i; } } cout<<ans<<endl; }