zoukankan      html  css  js  c++  java
  • P1024 一道naive的二分

    好吧,这道题思路还是比较简单的。整个程序大体上很快就打出来了,然后修改了解为整数的情况。

    但是交上去一直是50分,最后我很无耻的看了题解,然后抄了一个玄学if回来,瞬间AC,不知道为什么。。。

    这句就是玄学:

     1 if(f(i)*f(i+1)<0) 

    好吧,下面来看AC代码(本题还可以用2*暴力来做,也很naive)

     1 #include <cstdio>
     2 #include <iostream>
     3 using namespace std;
     4 double a,b,c,d;
     5 double f(double x)
     6 {
     7     return a*x*x*x+b*x*x+c*x+d;
     8 }
     9 void tw(double l,double r)
    10 {
    11     if(r-l<=0.005)
    12     {
    13         printf("%.2f ",l);
    14         return;
    15     }
    16     double mid=(l+r)/2.0;
    17     double ll=f(l);
    18     double rr=f(r);
    19     if(ll==0)
    20     {
    21         printf("%.2f ",l);
    22         return;
    23     }
    24     if(rr==0)
    25     {
    26         printf("%.2f ",r);
    27         return ;
    28     }
    29     if(ll*rr>0) return;
    30     double m=f(mid);
    31     if(m==0)
    32     {
    33         printf("%.2f ",mid);
    34         return;
    35     }
    36     if(m*ll<0) tw(l,mid);
    37     else tw(mid,r);
    38     return;
    39 }
    40 
    41 int main()
    42 {
    43     cin>>a>>b>>c>>d;
    44     for(double i=-101.0;i<=100.1;i++)
    45     {
    46 
    47         if(f(i)==0.00)
    48         {
    49             printf("%.2f ",i);
    50         }
    51         if(f(i)*f(i+1)<0) tw(i,i+1);
    52     }
    53     return 0;
    54 }
    View Code

    可以发现二分很冗杂...可以改进。

  • 相关阅读:
    用servlet来实现验证码的功能
    Sqlite3 数据库
    xml解析
    Android .9文件
    AsyncTask
    Looper Handler
    URLConnection
    单例模式
    Httpclient访问网络
    json 解析
  • 原文地址:https://www.cnblogs.com/huyufeifei/p/8515918.html
Copyright © 2011-2022 走看看