zoukankan      html  css  js  c++  java
  • 三分法 求最大值最小|牛客寒假5-B牛牛战队的比赛地

    最大值最小

    很容易想到二分,但是二分没思路。
    所以再想到三分,最大值最小,就是在最大值函数中找极小值,所以可以用三分

    这里三分的应用判别场景是:可以发现最大距离的最小值随x的变化会出现一个极值。所以二分所在的横坐标x,check(x)求最大距离,三分不断缩小区间

    #include<bits/stdc++.h>
    using namespace std;
    
    int n;
    const int maxn = 100010;
    const double eps = 1e-5;
    
    struct node{
    	double x,y;
    }a[maxn]; 
    
    double check(double x){
    	double maxx = -0x3f3f3f3f;
    	for(int i=1;i<=n;i++){
    		maxx = max(maxx,sqrt((a[i].x - x)*(a[i].x - x) + a[i].y * a[i].y));
    	}
    	return maxx;
    }
    
    int main(){
    	cin>>n;
    	for(int i=1;i<=n;i++) cin>>a[i].x>>a[i].y;
    	double l = -10000;
    	double r = 10000;
    	while(l + eps < r){
    		double mid = (l + r)/2;
    		if(check(mid - eps) > check(mid + eps))
    			l = mid;
    		else
    			r = mid;
    	}
    	printf("%.4lf",check(l));
    	return 0;
    }
    
  • 相关阅读:
    @RestController
    spring-boot入门环境
    spring事务管理
    Spring和hibernate框架整合
    python的for循环及数组
    PreparedStatement防止SQL注入
    python入门
    maven 依赖规则&版本锁定
    使用eclipse创建一个简单的maven项目
    maven常用命令 (1)
  • 原文地址:https://www.cnblogs.com/fisherss/p/12309217.html
Copyright © 2011-2022 走看看