poj 3737 UmBasketella(三分+求导)

原创 2012年03月26日 00:09:53

【题目大意】:给出一个圆锥体的表面积,求最大的体积,并输出其半径和高。


【解题思路】:下午在比赛的时候是直接求导推的公式做的。

  晚上回来想想其实三分极值可以做,但是一直wa,不知道为什么。

                          我原来三分是这么写的 mid1=(low+high)/2.0; mid2=(mid+high)/2.0; 但是一直过不了,后来改成mid1=low+(high-low)/3.0; mid2=high-(high-low)/3.0;就过了~~不知道什么原因。留着思考....


【代码】:

//三分
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
                   
using namespace std;
                   
#define eps 1e-10
#define pi acos(-1.0)
#define inf 1<<30
#define linf 1LL<<60
#define pb push_back
#define lc(x) (x << 1)
#define rc(x) (x << 1 | 1)
#define lowbit(x) (x & (-x))
#define ll long long

double s;

double solve_v(double r){
    return  pi*r*r*sqrt(pow((s-pi*r*r)/(pi*r),2)-r*r)/3;
}

int main(){
	while (~scanf("%lf",&s)){
		double v=0.0;
		double low=0,high=sqrt(s/pi);
		while (low+eps<high){
			double mid1=low+(high-low)/3.0;
			double mid2=high-(high-low)/3.0;
			double v1,v2;
            v1=solve_v(mid1);
            v2=solve_v(mid2);
            if (v1>v2) v=v1,high=mid2;
			else v=v2,low=mid1;
		}
	    double h=sqrt(pow((s-pi*high*high)/(pi*high),2)-high*high);
	    printf("%.2f\n%.2f\n%.2f\n", v,h,high);
    
    }
	return 0;
}
//求导
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <vector>
#include <queue>
#include <cmath>
#include <string>
#include <cctype>
#include <map>
#include <iomanip>
                   
using namespace std;
                   
#define eps 1e-8
#define pi acos(-1.0)
#define inf 1<<30
#define linf 1LL<<60
#define pb push_back
#define lc(x) (x << 1)
#define rc(x) (x << 1 | 1)
#define lowbit(x) (x & (-x))
#define ll long long

double s,r,h,v,l;

void solve(){
    r=sqrt(s/(4*pi));
    l=s/(pi*r)-r;
    h=sqrt(l*l-r*r);
    v=1.0/3*pi*r*r*h;
}

int main() {
    while (~scanf("%lf",&s)){
        solve(); 
        printf ("%.2f\n",v);
        printf ("%.2f\n",h);
        printf ("%.2f\n",r);
    } 
    return 0;
}



版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

poj 3737 UmBasketella(数学推导||三分)

题目:http://poj.org/problem?id=3737 我是想练一练三分的,听说这题能用上,但是我做完了也没把三分派上用场(第一种方法)。数学分析一下就能得出结果啊。令圆锥的底面半径...

POJ 3737 UmBasketella(三分)

UmBasketella Description In recent days, people always design new things with multifunction. For...

poj 3737 UmBasketella(三分)

我们都知道 二分查找 适用于单调函数中逼近求解某点的值。 如果遇到凸性或凹形函数时,可以用三分查找求那个凸点或凹点(即最值)。 还有通过这道题知道了,输出doubleG++用%lf会wa,一...

POJ 3737 UmBasketella 三分搜索

UmBasketella Time Limit: 1000MS Memory Limit: 65536KB 64bit IO Format: %lld & %llu SubmitStatus...

POJ 3737 UmBasketella

Description In recent days, people always design new things with multifunction. For instance, you...

POJ 3737 UmBasketella.

Description In recent days, people always design new things with multifunction. For instance, y...

[POJ3737]UmBasketella

In recent days, people always design new things with multifunction. For instance, you can not only u...

【原创】【假分治】UmBasketella POJ 3737

UmBasketella POJ 3737题目In recent days, people always design new things with multifunction. For insta...

POJ 3737 UmBasketella

UmBasketella Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6248   A...
  • caduca
  • caduca
  • 2015-02-03 17:09
  • 4310

洛谷P3382:(三分/求导+二分)

【模板】三分法 题目描述 如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减。试求出x的值。 输入输出格式 输入格式: 第一行一次包含一个正整数N和两...
  • KsCla
  • KsCla
  • 2016-12-24 14:55
  • 514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)