题意略。

这个题目最关键的是在于计算球冠的体积。令球冠体积为V。

我们可以用祖暅原理来计算V,

这里,可以看出,球冠的体积等于左图的上半个圆柱减去那个倒扣的圆台。

祖暅原理:界于两个平行平面之间的两个立体,被任一平行于这两个平面的平面所截,如果两个截面的面积相等,则这两个立体的体积相等。

V = Pi * r^2 * (r - y) - V(圆台)

本题分为五种情况来讨论:

1.球完全内含于圆柱。

2.球左右凸出圆柱,但是上下不突出。

3.球左右不凸出圆柱,但是上下突出圆柱。

4.球上下左右均凸出,但是尚未包含圆柱。

5.球包含圆柱。

#include<bits/stdc++.h>
#define Pi acos(-1.0)
using namespace std; double R,HR,HZ; int main(){
while(scanf("%lf%lf%lf",&R,&HR,&HZ) == ){
double part1,part2;
double v1 = Pi * R * R * R * 4.0 / 3.0;
double v2 = Pi * HR * HR * HZ * ;
if(R <= HR && R <= HZ){
part1 = v1;
part2 = v2;
}
else if(R <= HR && R > HZ){
double add = Pi * R * R * (R - HZ) - 1.0 / 3.0 * Pi * (R - HZ) * (HZ * HZ + R * R + HZ * R);
part1 = v1 - * add;
part2 = v2 + * add;
}
else if(R > HR && R <= HZ){
double d = sqrt(R * R - HR * HR);
double add = Pi * R * R * (R - d) - 1.0 / 3.0 * Pi * (R - d) * (d * d + R * R + d * R);
add = 2.0 / * Pi * R * R * R - add;
add *= ;
add -= Pi * HR * HR * * d;
part1 = v1 - add;
part2 = v2 + add;
}
else if(R > HR && R > HZ && R < sqrt(HR * HR + HZ * HZ)){
double add1 = Pi * R * R * (R - HZ) - 1.0 / 3.0 * Pi * (R - HZ) * (HZ * HZ + R * R + HZ * R);
double d = sqrt(R * R - HR * HR);
double add2 = Pi * R * R * (R - d) - 1.0 / 3.0 * Pi * (R - d) * (d * d + R * R + d * R);
add2 = 2.0 / 3.0 * Pi * R * R * R - add2;
add2 *= ;
add2 -= Pi * HR * HR * * d;
part1 = v1 - * add1 - add2;
part2 = v2 + * add1 + add2;
}
else if(R >= sqrt(HR * HR + HZ * HZ)){
part1 = v2;
part2 = v1;
}
printf("%lf\n",part1 / part2);
}
return ;
}

HDU 5060的更多相关文章

  1. hdu 5060 五种情况求圆柱体与球体交

    http://acm.hdu.edu.cn/showproblem.php?pid=5060 官方题解http://bestcoder.hdu.edu.cn/给复杂了 实际上用圆柱体与球体体积差的积分 ...

  2. hdu 5060 War

    War Time Limit: 8000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submis ...

  3. [kmp+dp] hdu 4628 Pieces

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4622 Reincarnation Time Limit: 6000/3000 MS (Java/Ot ...

  4. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  5. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  6. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  7. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

  8. HDU 4006The kth great number(K大数 +小顶堆)

    The kth great number Time Limit:1000MS     Memory Limit:65768KB     64bit IO Format:%I64d & %I64 ...

  9. HDU 1796How many integers can you find(容斥原理)

    How many integers can you find Time Limit:5000MS     Memory Limit:32768KB     64bit IO Format:%I64d ...

随机推荐

  1. CCF系列之字符串匹配(201409-3)

    试题编号:201409-3试题名称:字符串匹配时间限制: 1.0s内存限制: 256.0MB 问题描述 给出一个字符串和多行文字,在这些文字中找到字符串出现的那些行.你的程序还需支持大小写敏感选项:当 ...

  2. 使用logrotate分割tomcat日志

    转:https://www.52os.net/articles/using-logrotate-manage-tomcat-logs.html July 28, 2014 日志是Linux系统中最重要 ...

  3. mysql-关联查询

    MySQL关联查询的三种写法: SELECT * FROM film JOIN film_actor ON (film.film_id = film_actor.film_id);SELECT * F ...

  4. ImmutableMap

    不可变集合,为什么使用它呢?线程安全\更有效的利用内存\可作为常量 ImmutableMap.<String, Object> builder().put("yananList& ...

  5. jdk源码->集合->ConcurrentHashMap

    类的属性 public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentM ...

  6. TCP/IP网络协议基础知识集锦[转]

    引言 本篇属于TCP/IP协议的基础知识,重点介绍了TCP/IP协议簇的内容.作用以及TCP.UDP.IP三种常见网络协议相关的基础知识. 内容 TCP/IP协议簇是由OSI七层模型发展而来的,之所以 ...

  7. AppScan 工作原理

    Rational AppScan(简称 AppScan)其实是一个产品家族,包括众多的应用安全扫描产品,从开发阶段的源代码扫描的 AppScan source edition,到针对 Web 应用进行 ...

  8. 【socket编程】select manual page翻译

    原文: select manual page 依赖的头文件 /* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select. ...

  9. 解决AspNet Zero Core 5.0.1无法运行的问题

    最近在研究AspNet Zero Core 5.0.1时发现VS点击调试后就自动退出了,从ABP QQ群里得知作者加入了licensecode校验.经过一个周左右断断续续的折腾,算是破解了吧.原本想把 ...

  10. 洛谷 [P2756] 飞行员配对方案问题

    二分图匹配裸题 可以用匈牙利做,简单高效 输出具体的匹配路径时 ,直接输出match数组即可 #include <iostream> #include <cstdio> #in ...