首页 > 其他分享 >D - Freefall -- ATCODER

D - Freefall -- ATCODER

时间:2022-11-27 22:46:44浏览次数:42  
标签:Freefall ATCODER -- double int https mid2

D - Freefall

https://atcoder.jp/contests/abc279/tasks/abc279_d

思路

求凹函数的极小值

 

 https://www.cnblogs.com/luoyj/p/12408277.html#6

#include<bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
int n;
double a[15];
double f(double x){       //计算函数值
    double s=0;
    for(int i=n;i>=0;i--) //注意函数求值的写法
        s = s*x + a[i];
    return s;
}
int main(){
    double L,R;
    scanf("%d%lf%lf",&n,&L,&R);
    for(int i=n;i>=0;i--) scanf("%lf",&a[i]);
    while(R-L > eps){  // for(int i = 0; i<100; i++){   //用for也行
        double k =(R-L)/3.0;
        double mid1 = L+k, mid2 = R-k;
        if(f(mid1) > f(mid2)) 
               R = mid2;
        else   L = mid1;
    }
    printf("%.5f\n",L);
    return 0;
}

 

Code

https://atcoder.jp/contests/abc279/submissions/36830825

void solve() {
    // double EPS = 0.0000001;
    cout << fixed << setprecision(10);
    double a, b;
    cin >> a >> b;
 
    auto cal = [&](int x) -> double {
        return x * b + a / sqrt(1+x);
    };
 
    // cout << fixed << setprecision(10);
    // int x = pow(a/2/b, 2/3) - 1;
    // cout << min({cal(x-1), cal(x), cal(x+1)}) << endl;
 
    int left = 0, right = INF;
    while(right - left > 2) {
        int mid1 = (left * 2 + right) / 3;
        int mid2 = (left + right * 2) / 3;
 
        double t1 = cal(mid1);
        double t2 = cal(mid2);
 
        if(t1 <= t2) {
            right = mid2;
        }else {
            left = mid1;
        }
    }
    
    double ans = a;
    repi(i, max(0LL, left-10), right+10) chmin(ans, cal(i));
    cout << ans << endl;
}
 
signed main() {
    cin.tie(nullptr);
    ios::sync_with_stdio(false);
    solve();
    return 0;
}

 

标签:Freefall,ATCODER,--,double,int,https,mid2
From: https://www.cnblogs.com/lightsong/p/16930906.html

相关文章

  • 桌面设置程序v1.1
     windows获取桌面路径的API函数:SHGetSpecialFolderPath 1.读取桌面路径的函数:wstringGetDesktopPath(){  TCHARszPath[_MAX_PATH];   SHGetSpecialFolde......
  • Centos7下redis5安装、部署、开机自启
    不知道为何,使用centos7安装redis4.0以上版本的yum源一直找不到,官网也没有,具体原因没有去调查,所以这里使用源码安装做个记录 1.由于Redis是用C语言编写,所以编译......
  • 2022-2023-1 20221311 《计算机基础与程序设计》第十三周学习总结
    班级链接:https://edu.cnblogs.com/campus/besti/2022-2023-1-CFAP作业要求:https://www.cnblogs.com/rocedu/p/9577842.html#WEEK08作业目标:作业目标:《C语言程序设计》第12......
  • 九、结构体
    九、结构体在实际开发中,我们可以将一组类型不同的、但是用来描述同一件事物的变量放到结构体中。例如,在校学生有姓名、年龄、身高、成绩等属性,学了结构体后,我们就不需要再......
  • Java: Regular Expressions
    Pattern Class-Definesapattern(tobeusedinasearch)Matcher Class-UsedtosearchforthepatternPatternSyntaxException Class-Indicatessyntaxe......
  • 不够沉淀----001 Vue学习播客
    vue初体验1.1使用cdn来进行初体验Vue,可以通过页面进行message的修改,来打到双向绑定的效果, 1.2:下面是可以根据页面来进行调试 ......
  • ParallelGC调优参数细讲
    最近项目一直在跑性能测试,看到程序的MinorGC频率增高,每分钟GC时间增大,心里总是会忐忑,待会儿不会又有503吧。前言对于Java程序员来说,GC总是绕不过去的一个知识点,总有那么......
  • 给django ModelForm加样式
    widgets={#'depart':forms.widget.Select(attrs={'class':'js-selectform-control'}),这个不知道是什么原因不成功#'name':forms.wid......
  • 倒排单词
    输入:Iamastudent输出:studentaamI最简单的做法:#include<iostream>usingnamespacestd;intmain(){stringstr,res;while(cin>>str)res=str+''+res;c......
  • 拓端数据tecdat|Python代写LDA主题模型算法应用
    在这篇文章中,我将介绍用于LatentDirichletAllocation(LDA)的ldaPython包的安装和基本用法。我不会在这篇文章中介绍该方法的理论基础。然而,这个模型的主要参考,Bleietal2......