1. 程式人生 > 實用技巧 >第十一屆藍橋杯b組省賽 C.合併檢測

第十一屆藍橋杯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; }