hdu 2899 hdu 3400 三分/几何

hdu2899 ;

水提,直接三分,其实求导后二分也可以。

#include<iostream>
#include<cstdio>
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)<f(m2))
            {
                r=m2;
            }
            else
            {
                l=m1;
            }
        }
       printf("%.4lf\n",f(l));
    }
    return 0;
}

hdu3400  有俩个未知,第一次确定,则第二个函数式先见后增的,而第二个反馈出最小值后,第一个未知也是先见后增的,所以三分套三分(九分??呵呵~)

#include<iostream>
#include<cstdio>
#include<cmath>
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)<s(t,m2))
            {
                r=m2;
            }
            else
            {
                l=m1;
            }
        }
        return s(t,l);
}

int main()
{
    int T;scanf("%d",&T);
    while(T--)
    {
        scanf("%lf%lf%lf%lf%lf%lf%lf%lf",&A.x,&A.y,&B.x,&B.y,&C.x,&C.y,&D.x,&D.y);
        scanf("%d%d%d",&p,&q,&r);
        xy l,r,m1,m2;
        l=A;r=B;
        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(f(m1)<f(m2))
            {
                r=m2;
            }
            else
            {
                l=m1;
            }
        }
       printf("%.2lf\n",f(l));
    }
    return 0;
}
时间: 2024-10-12 14:36:11

hdu 2899 hdu 3400 三分/几何的相关文章

hdu 2899 Strange fuction——模拟退火

题目:http://acm.hdu.edu.cn/showproblem.php?pid=2899 还可三分.不过只写了模拟退火. #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<ctime> #include<cmath> #include<cstdlib> #define db double using

hdu 2899 Strange fuction (二分)

题目链接:http://acm.hdu.edu.cn/showproblem.pihp?pid=2899 题目大意:找出满足F(x) = 6 * x^7+8*x^6+7*x^3+5*x^2-y*x (0 <= x <=100)的x值.注意精确度的问题. 1 #include <iostream> 2 #include <cstdio> 3 #include <cmath> 4 using namespace std; 5 double y; 6 7 doub

HDU 2899 Strange fuction (模拟退火)

题目链接:HDU 2899 Problem Description Now, here is a fuction: F(x) = 6 * x^7+8x^6+7x^3+5x^2-yx (0 <= x <=100) Can you find the minimum value when x is between 0 and 100. Input The first line of the input contains an integer T(1<=T<=100) which mean

hdu 3061 hdu 3996 最大权闭合图 最后一斩

hdu 3061 Battle :一看就是明显的最大权闭合图了,水提......SB题也不说边数多少....因为开始时候数组开小了,WA....后来一气之下,开到100W,A了.. hdu3996.  gold mine..看了一下,简单题,几乎裸,不敲了.. #include<iostream>//Battle #include<queue> #include<cstdio> #include<cstring> #include<set> #i

hdu 3081 hdu 3277 hdu 3416 Marriage Match II III IV //最大流的灵活运用

3081 题意: n个女孩选择没有与自己吵过架的男孩有连边(自己的朋友也算,并查集处理),2分图,有些边,求有几种完美匹配(每次匹配每个点都不重复匹配) 我是建二分图后,每次增广一单位,(一次完美匹配),再修改起点还有终点的边流量,继续增广,直到达不到完美匹配为止.网上很多是用二分做的,我觉得没必要...(网上传播跟风真严重...很多人都不是真正懂最大流算法的...) 3277 : 再附加一条件,每个女孩可以最多与k个自己不喜欢的男孩.求有几种完美匹配(同上). 我觉得:求出上题答案,直接ans

2014多校联合六(HDU 4923 HDU 4925 HDU 4927 HDU 4930)

HDU 4923 Room and Moor 题意:给出A序列  求满足题目所写的B序列  使得方差最小 思路:可以想到最后的结果中  B序列的值一定是一段一段的  那么我们可以类似贪心去搞  对于一段序列我们可以求出什么样的b值使得方差最小  即序列中1的个数除以序列长度  又因为B是单调的  可以用一个单调栈去模拟  复杂度远远小于n^2  不要被吓怕- 代码: #include<cstdio> #include<cstring> #include<algorithm&g

2014多校联合三 (HDU 4888 HDU 4891 HDU 4893)

HDU 4891 The Great Pan 签到题  他怎么说你就怎么做就好了  注意做乘法时候会爆int 代码: #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> using namespace std; typedef long long LL; int n; char s[2000000]; int flag1, flag2, sp, ansflag;

SG 函数初步 HDU 1536 &amp;&amp; HDU 1944

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1944 http://acm.hdu.edu.cn/showproblem.php?pid=1536 给定每一次可以取的石头数,给定很多种情况,每一种情况有若干堆石头,判断先手胜负. SG函数打表,然后直接抑或,判断结果是否为0,第一次写SG函数,贴个代码,慢慢理解. 代码: /* *********************************************** Author :rabb

hdu 3879 hdu 3917 构造最大权闭合图 俩经典题

hdu3879  base station : 各一个无向图,点的权是负的,边的权是正的.自己建一个子图,使得获利最大. 一看,就感觉按最大密度子图的构想:选了边那么连接的俩端点必需选,于是就以边做点,轻轻松松构造了最大权闭合图.简单题.分分钟搞定. hdu3917 :road  constructions :这题题目看了半天没理解...感觉描述的不好...一个有向图,每条路有响应公司承保,若选了该公司,那么该公司的路必需全部选,还有,该公司的承保的路的下面的一条路对应公司也要选,求最大获利.构