ホームに戻る
2分探索
// 最小値探索(離散バージョン)
long long low = 0;
long long high = 1000000000;
while(low < high){
long long mid = (high + low) >> 1;
if(check(mid) == 1){
high = mid;
}
else{
low = mid + 1;
}
}
cout << low << endl;
// 最大値探索(離散バージョン)
long long low = 0;
long long high = 1000000000;
while(low < high){
long long mid = (high + low + 1) >> 1;
if(check(mid) == 1){
low = mid;
}
else{
high = mid - 1;
}
}
cout << low << endl;
// 最小値探索(連続バージョン)
double low = 0.0;
double high = 10000.0;
for(int i = 0; i < 200; i++){
double mid = (low + high) / 2;
if(check(mid)){
high = mid;
}
else{
low = mid;
}
}
cout << high << endl;
// 最大値探索(連続バージョン)
double low = 0.0;
double high = 10000.0;
for(int i = 0; i < 200; i++){
double mid = (low + high) / 2;
if(check(mid)){
low = mid;
}
else{
high = mid;
}
}
cout << high << endl;