第十一届蓝桥杯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;
}

 

posted @ 2020-10-13 20:20  liyexin  阅读(1111)  评论(0编辑  收藏  举报