zoukankan      html  css  js  c++  java
  • hdu 2899

    mxy终于学会求函数极值了。

    先写一道板子。

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 typedef double db;
     4 const db eps = 1e-6;
     5 const db INF = 1e100;
     6 const db delta = 0.98;
     7 int sign(db k){
     8     if (k>eps) return 1; else if (k<-eps) return -1; return 0;
     9 }
    10 int cmp(db k1,db k2){return sign(k1-k2);}
    11 int t;db y;
    12 db get(db x){
    13     return 6*x*x*x*x*x*x*x+8*x*x*x*x*x*x+7*x*x*x+5*x*x-y*x;
    14 }
    15 db x[10];
    16 db random(){
    17     return (rand()&1?1:-1)*rand()*1.0/32767;
    18 }
    19 void init(){
    20     for(int i=0;i<10;i++) x[i]=abs(random())*100;
    21 }
    22 db sa(){
    23     db ans = INF;
    24     db t=100;
    25     while (t>eps){
    26         for(int i=0;i<10;i++){
    27             db tmp = get(x[i]);
    28             for(int j=0;j<10;j++){
    29                 db _x=x[i]+random()*t;
    30                 if(cmp(_x,0)>=0&&cmp(_x,100)<=0){
    31                     db f = get(_x);
    32                     if(tmp>f)
    33                         x[i]=_x;
    34                 }
    35             }
    36         }
    37         t*=delta;
    38     }
    39     for(int i=0;i<10;i++)
    40         ans=min(ans,get(x[i]));
    41     return ans;
    42 }
    43 
    44 int main(){
    45     ios::sync_with_stdio(false);
    46     scanf("%d",&t);
    47     while (t--){
    48         scanf("%lf",&y);
    49         init();
    50         printf("%.4f
    ",sa());
    51     }
    52 }
    View Code
  • 相关阅读:
    自动化基础知识
    第一章Google软件测试介绍
    《将博客搬至CSDN》
    二叉树的先序遍历和中序遍历分析(递归)
    java 部分快捷功能
    toString
    自增自减运算符剖析
    二进制数的直接表示
    编程中的&&和||
    npm 镜像地址设置
  • 原文地址:https://www.cnblogs.com/MXang/p/10544651.html
Copyright © 2011-2022 走看看