题意:给定一个立体的图形,上面是圆柱,下面是圆台,圆柱的底面半径和圆台的上半径相等,然后体积的V时,问这个图形的表面积最小可以是多少。(不算上表面)。一开始拿到题以为可以YY出一个结果,就认为它是圆锥,赛后才知道原来要三分三分再三分。 就是对上下体积三分,对上半径和下半径三分。至于为什么是凸的貌似也不怎么好想,但是我后来确实发现单纯的圆锥肯定取不到最大值,这题就当作是学习三分的技巧啦- -0

#pragma warning(disable:4996)
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<vector>
#include<cmath>
#define ll long long
#define eps 1e-5
using namespace std; double r1, r2, V;
double v1, v2;
double pi = acos(-1.0); int dcmp(double x)
{
return (x > eps) - (x < -eps);
} double cal(double x)
{
r2 = x;
double H = v1 / (pi*r1*r1);
double h = 3 * v2 / (pi*r1*r1 + pi*r2*r2 + pi*r1*r2);
double ans = 0;
double mother = sqrt((r2 - r1)*(r2 - r1) + h*h);
ans = pi*(r1 + r2)*mother + 2 * pi*r1*H + pi*r2*r2;
return ans;
} double lr(double x)
{
v1 = x; v2 = V - x;
double l = 0, r = r1;
while (dcmp(r - l)>0)
{
double m1 = l + (r - l) / 3;
double m2 = l + 2 * (r - l) / 3;
double x1 = cal(m1);
double x2 = cal(m2);
if (x1 < x2) r = m2;
else l = m1;
}
return cal(l);
} double vol(double x)
{
r1 = x;
double l = 0, r = V;
while (dcmp(r-l)>0)
{
double m1 = l + (r - l) / 3;
double m2 = l + 2 * (r - l) / 3;
double x1 = lr(m1),x2 = lr(m2);
if (x1 < x2) r = m2;
else l = m1;
}
return lr(l);
} double solve()
{
double l = 0, r = 10*V;
while (dcmp(r - l)>0){
double m1 = l + (r - l) / 3;
double m2 = l + 2 * (r - l) / 3;
double x1 = vol(m1), x2 = vol(m2);
if (x1 < x2) r = m2;
else l = m1;
}
return vol(l);
} int main()
{
while (cin >> V)
{
double ans = solve();
printf("%.6lf\n", ans);
}
return 0;
}

ZOJ3550 Big Keng(三分)的更多相关文章

  1. hdu3714 三分找最值

    Error Curves Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)Tota ...

  2. BZOJ 1857 传送带 (三分套三分)

    在一个2维平面上有两条传送带,每一条传送带可以看成是一条线段.两条传送带分别为线段AB和线段CD.lxhgww在AB上的移动速度为P,在CD上的移动速度为Q,在平面上的移动速度R.现在lxhgww想从 ...

  3. hdu 4717(三分求极值)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4717 思路:三分时间求极小值. #include <iostream> #include ...

  4. HDU2438 数学+三分

    Turn the corner Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)T ...

  5. 三分之一的程序猿之社交类app踩过的那些坑

    三分之一的程序猿之社交类app踩过的那些坑 万众创新,全民创业.哪怕去年陌生人社交不管融资与否都倒闭了不知道多少家,但是依然有很多陌生人社交应用层出不穷的冒出来.各种脑洞大开,让人拍案叫起. 下面我们 ...

  6. 基于jPlayer的三分屏制作

    三分屏,这里的三分屏只是在一个播放器里同时播放三个视频,但是要求只有一个控制面板同时控制它们,要求它们共享一个时间轨道.这次只是简单的模拟了一下功能,并没有深入的研究. 首先,需要下载jPlayer, ...

  7. 【BZOJ-1857】传送带 三分套三分

    1857: [Scoi2010]传送带 Time Limit: 1 Sec  Memory Limit: 64 MBSubmit: 1077  Solved: 575[Submit][Status][ ...

  8. ACM : HDU 2899 Strange fuction 解题报告 -二分、三分

    Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tot ...

  9. bzoj1857: [Scoi2010]传送带--三分套三分

    三分套三分模板 貌似只要是单峰函数就可以用三分求解 #include<stdio.h> #include<string.h> #include<algorithm> ...

随机推荐

  1. rails笔记

    rake -T 列出全部taskconfig.active_record.schema_format = :sql #remove the old db/schema.rb file, create ...

  2. C高级 服务器内核分析和构建 (一)

    引言 最经看cloud wind 的 skynet服务器设计. 觉得特别精妙. 想来个专题先剖析其通信层服务器内核 的设计原理. 最后再优化.本文是这个小专题的第一部分, 重点会讲解对于不同平台通信基 ...

  3. ORA-01078、ORA-01565、ORA-17503、ORA-29701

    OS: Oracle Linux Server release 5.7 DB: Oracle Database 11g Enterprise Edition Release 11.2.0.2.0 - ...

  4. Sql Server 语句

    ##目录 #####清除缓存 DBCC FREEPROCCACHE; DBCC DROPCLEANBUFFERS; SELECT stock.IdStock, stock.Descr FROM [In ...

  5. Android之使用HTTP协议的Get/Post方式向服务器提交数据

    1.Get方式 方法:通过拼接url在url后添加相应的数据,如:http://172.22.35.112:8080/videonews/GetInfoServlet?title=霍比特人&t ...

  6. AFNetworking 2.0 使用

    AFNetworking 下载地址:https://github.com/AFNetworking/AFNetworking/ AFNetworking 2.0 当Deployment Target ...

  7. Python实现kMeans(k均值聚类)

    Python实现kMeans(k均值聚类) 运行环境 Pyhton3 numpy(科学计算包) matplotlib(画图所需,不画图可不必) 计算过程 st=>start: 开始 e=> ...

  8. iOS 进阶 第二十二天(0603)

    0603 block\运行时 block block的本质是一个指向结构体的指针. 运行时 要分析clang命令反编译出来的c++代码,就要把一些小括号删掉来分析.因为这些小括号一般都是类型强转. o ...

  9. P1951: [Sdoi2010]古代猪文

    呜啊啊啊啊,选错了题,原以为很简单的优化+剪枝就能过结果牵扯到了一堆数论知识.我的错,贴上我的代码(已经尽量优化了) ; var n,g,i,j,ans:longint; tem:int64; fun ...

  10. c++中-1是true呢还是false呢

    今天想看一下引用c++中的,然后看到网上有问c++中-1是true or false呢?用vc6.0是了一下,是true.vc6.0中应该是非0的都是true,0为false.java我也试了一下,i ...