2分探索
- double f(vector<int> h, double g)
- {
- double sum = 0;
- for (int i = 0; i < h.size(); ++i) {
- sum += sqrt(2.0 * h[i] / g);
- }
- return sum;
- }
- class IncredibleMachineEasy {
- public:
- double gravitationalAcceleration(vector <int> H, int T)
- {
- double small = 1e-10;
- double large = 1e256;
- for (int loop = 10000; loop--; ) {
- double mid = (small + large) / 2.0;
- double t = f(H, mid);
- if (t >= T) small = mid;
- else large = mid;
- }
- return small;
- }
- };