• 【随意学学】三分法


    三分法其实是很naive的东西……

    但是不知道为什么蒟蒻我之前一直没空学……

    大概就是求一类单峰的函数,每次把区间三分(以求极小值举例),如果$f(mid1)<f(mid2)$说明解在$[L,mid2]$中,反之解在$[mid2,R]$中。

    裸题1:LA 5009

     1 #include<bits/stdc++.h>
     2 #define N 100005
     3 using namespace std;
     4 int n,a[N],b[N],c[N];
     5 inline double f(double x){
     6     double ans=a[1]*x*x+b[1]*x+c[1];
     7     for(int i=2;i<=n;i++)ans=max(ans,a[i]*x*x+b[i]*x+c[i]);
     8     return ans;
     9 }
    10 inline int read(){
    11     int f=1,x=0;char ch;
    12     do{ch=getchar();if(ch=='-')f=-1;}while(ch<'0'||ch>'9');
    13     do{x=x*10+ch-'0';ch=getchar();}while(ch>='0'&&ch<='9');
    14     return f*x;
    15 }
    16 int main(){
    17     int T=read();
    18     while(T--){
    19         n=read();
    20         for(int i =1;i<=n;i++)a[i]=read(),b[i]=read(),c[i]=read();
    21         double l=0.0,r=1000.0;
    22         for(int i=1;i<=100;i++){
    23             double mid1=l+(r-l)/3,mid2=r-(r-l)/3;
    24             if(f(mid1)<f(mid2))r=mid2;else l=mid1;
    25         }
    26         printf("%.4lf
    ",f(l));
    27     }
    28     return 0;
    29 }

    裸题2:洛谷模版

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 int n;
     4 double l,r,a[20],xsh[20];
     5 inline double f(double x){
     6     double ans=0;
     7     for(int i=1;i<=n;i++){
     8         double tmp=a[i];
     9         for(int j=1;j<=n-i+1;j++)tmp*=x;
    10         ans+=tmp;
    11     }
    12     return ans+a[n+1];
    13 }
    14 int main(){
    15     scanf("%d",&n);scanf("%lf%lf",&l,&r);
    16     for(int i=1;i<=n+1;i++)scanf("%lf",&a[i]);
    17     double lx=l,rx=r;
    18     while(abs(lx-rx)>0.000001){
    19         double x1=lx+(rx-lx)/3,x2=rx-(rx-lx)/3;
    20         if(f(x1)>f(x2)) rx=x2;
    21         else lx=x1;
    22     }
    23     printf("%.5lf
    ",lx);
    24     return 0;
    25 }
    zzq wc-ctsc-apio-NOI Au;yql精通多项式;zyz精通女装;由乃精通数据结构;孔老师是毒奶大师;我没有学上:我们都有光明的前途。
  • 相关阅读:
    linux--文件夹下批量改动IP
    Effective C++ 条款24
    ARMv8 Linux内核异常处理过程分析
    VS2010升级VS2013后,出现没有定义类型“PowerPacks.ShapeContainer”错误解决方法
    利用Nginx构建负载均衡server
    getline与get函数的区别
    Linking Containers Together
    获取不同机型外置SD卡路径
    查看linux系统状态
    Linux 开机自检的设置(tune2fs和fsck)
  • 原文地址:https://www.cnblogs.com/zcysky/p/6826436.html
Copyright © 2020-2023  润新知