程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> hdu 2899 hdu 3400 三分/幾何

hdu 2899 hdu 3400 三分/幾何

編輯:C++入門知識

hdu 2899 hdu 3400 三分/幾何


hdu2899 ;

水提,直接三分,其實求導後二分也可以。

#include
#include
using namespace std;
  double y;
  double inline f( long double x)
{
    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;
}
int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        cin>>y;
        double l,r,m1,m2;
        l=0;r=100;
        while(r-l>0.000001)
        {
            m1=l+(r-l)/3;
            m2=r-(r-l)/3;
            if(f(m1)

hdu3400 有倆個未知,第一次確定,則第二個函數式先見後增的,而第二個反饋出最小值後,第一個未知也是先見後增的,所以三分套三分(九分??呵呵~)

#include
#include
#include
using namespace std;
struct xy
{
    double x,y;
};
double inline dis( xy a,xy b)
{
    return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));
}
xy A,B,C,D;    int p,q,r;
double inline s(xy a ,xy b)
{
    return dis(a,A)/p+dis(a,b)/r+dis(b,D)/q;
}
double f(xy t)
{
     xy l,r,m1,m2;
     l=C;r=D;
        while(dis(r,l)>0.0001)
        {
            m1.x=l.x+(r.x-l.x)/3;
            m1.y=l.y+(r.y-l.y)/3;
            m2.x=r.x-(r.x-l.x)/3;
            m2.y=r.y-(r.y-l.y)/3;
            if(s(t,m1)0.0001)
        {
            m1.x=l.x+(r.x-l.x)/3;
            m1.y=l.y+(r.y-l.y)/3;
            m2.x=r.x-(r.x-l.x)/3;
            m2.y=r.y-(r.y-l.y)/3;
            if(f(m1)




  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved