zoukankan      html  css  js  c++  java
  • 三分查找——POJ3301

    三分

    主要推出fun函数

    fun(A)的意义就是在原来坐标上的点经过A弧度逆旋转后,正方形(边与坐标轴平行)最小边长要多长

    fun()在旋转的时候符合凸函数,所以三分求最值

    View Code
    #include<stdio.h>
    #include<math.h>
    #include<iostream>
    using namespace std;

    const double maxn=0xfffffffffffff;
    const double minn=-0xfffffffffffff;
    const double PI=acos(-1.0);

    double x[39],y[39];
    int n;

    double fun(double a)
    {
    double maxx=minn,minx=maxn,maxy=minn,miny=maxn;
    int i;
    for(i=1;i<=n;i++)
    {
    double tx,ty;
    tx=x[i]*cos(a)-y[i]*sin(a);
    ty=y[i]*cos(a)+x[i]*sin(a);

    maxx=max(maxx,tx);
    minx=min(minx,tx);
    maxy=max(maxy,ty);
    miny=min(miny,ty);
    }

    return max(maxx-minx,maxy-miny);
    }

    int main()
    {

    int t,i;
    double ll,rr,mid,midmid;
    scanf("%d",&t);
    while(t--)
    {
    scanf("%d",&n);
    for(i=1;i<=n;i++)
    {
    scanf("%lf%lf",&x[i],&y[i]);
    }

    ll=0;
    rr=PI;
    while(ll+0.00000000000001<rr)
    {
    mid=(ll+rr)/2.0;
    midmid=(mid+rr)/2.0;
    if(fun(mid)<=fun(midmid))
    {
    rr=midmid;
    }
    else
    ll=mid;
    }

    printf("%.2lf\n",fun(ll)*fun(ll));
    }
    }



  • 相关阅读:
    set命令_Linux
    AngularJS的date 过滤器
    JMeter环境介绍
    JMeter测试计划要素
    HTTP协议的压缩及URL Encode
    fiddler配置及使用教程
    Slenium常用方法
    Selenium八大定位
    CSS实现上下左右垂直居中
    SASS用法笔记
  • 原文地址:https://www.cnblogs.com/huhuuu/p/2316640.html
Copyright © 2011-2022 走看看