26072 c++ - 곰곰이와 시소
2024. 10. 23. 23:50ㆍ🐣/BOJ
이분탐색으로 풀었습니다.
중간에 입실론 오차범위 때문인지 오답이 되고 res의 범위를 탐색하는 과정에서 res<0, res>0으로 걸어서 시간초과에 빠지게 된 경우도 생겨서 double형의 범위나 이분탐색의 무한루프에 대해서 다시 한번 생각하는 문제가 되었습니다.
#include <iomanip>
#include <iostream>
#include <vector>
#define fastio ios::sync_with_stdio(0), cin.tie(0)
using namespace std;
int n;
double l;
int main() {
fastio;
cin >> n >> l;
vector<int> w(n);
vector<int> x(n);
for (int i = 0; i < n; i++) cin >> x[i];
for (int i = 0; i < n; i++) cin >> w[i];
double s = 0.0, e = l, mid = 0.0;
const double epsilon = 1e-7;
while (e - s > epsilon) {
mid = (s + e) / 2;
double res = 0.0;
for (int i = 0; i < n; i++) {
res += (w[i] * (x[i] - mid));
}
if (res < 0)
e = mid;
else
s = mid;
}
cout << fixed << setprecision(10) << (s + e) / 2;
return 0;
}
'🐣 > BOJ' 카테고리의 다른 글
1005 c++ - ACM Craft (0) | 2024.10.30 |
---|---|
5619 c++ - 세 번째 (0) | 2024.10.24 |
11052 c++ - 카드 구매하기 (0) | 2024.10.23 |
17069 c++ - 파이프 옮기기 2 (0) | 2024.10.22 |
1644 c++ - 소수의 연속합 (0) | 2024.10.21 |