第十一屆藍橋杯b組省賽 C.合併檢測
阿新 • • 發佈:2020-10-13
解析:
挺容易理解錯的一道題。。。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++) { intmd; if(100%i!=0) { md=100/i+i+1; } else{ md=100/i+i; } if(md<minn) { minn=md; ans=i; } } cout<<ans<<endl; }