博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ZOJ 3913 Bob wants to pour water
阅读量:6246 次
发布时间:2019-06-22

本文共 2397 字,大约阅读时间需要 7 分钟。

ZOJ Monthly, October 2015 K题

二分答案+验证

#include
#include
#include
#include
#include
using namespace std;const double pi=3.1415926535898;const int maxn=100000+10;struct cuboids{ double z; double width,length,height;}c[maxn];struct sphere{ double r; double z;}s[maxn];double W,L,V;int T,m,n;double Min,Max,Mid;double qiu(double r1,double h){ return pi/6*h*(3*(r1*r1+r1*r1-h*h)+h*h);}int main(){ scanf("%d",&T); while(T--) { scanf("%lf%lf%lf",&W,&L,&V); scanf("%d%d",&m,&n); double vNow=0; for(int i=1;i<=m;i++) scanf("%lf%lf%lf%lf",&c[i].z,&c[i].width,&c[i].length,&c[i].height); for(int i=1;i<=n;i++) scanf("%lf%lf",&s[i].z,&s[i].r); Min=0; Max=V; for(int i=1;i<=m;i++) Max=Max+c[i].width*c[i].length*c[i].height; for(int i=1;i<=n;i++) Max=Max+4.0/3.0*pi*s[i].r*s[i].r*s[i].r; Max=Max/(W*L); Mid=(Min+Max)/2.0; int t=500; while(t--) { vNow=W*L*Mid; for(int i=1;i<=m;i++) { if(c[i].z-c[i].height/2>=Mid) continue; else if(c[i].z+c[i].height/2<=Mid) vNow=vNow-c[i].width*c[i].length*c[i].height; else vNow=vNow-c[i].width*c[i].length*(Mid-(c[i].z-c[i].height/2)); } for(int i=1;i<=n;i++) { if(Mid<=s[i].z-s[i].r) continue; else if(Mid>=s[i].z+s[i].r) vNow=vNow-4.0/3.0*pi*s[i].r*s[i].r*s[i].r; else if(Mid>s[i].z-s[i].r&&Mid<=s[i].z) { vNow-=pi*s[i].r*s[i].r*s[i].r*4/3/2; vNow+=qiu(s[i].r,s[i].z-Mid); } else { vNow-=pi*s[i].r*s[i].r*s[i].r*4/3/2; vNow-=qiu(s[i].r,Mid-s[i].z); } } if(Max-Mid<1e-8) break; if(vNow>V) { Max=Mid; Mid=(Min+Max)/2.0; } else { Min=Mid; Mid=(Min+Max)/2.0; } } printf("%.6lf\n",Mid); } return 0;}

 

转载于:https://www.cnblogs.com/zufezzt/p/4870215.html

你可能感兴趣的文章
80端口被NT kernel & System 占用pid 4
查看>>
mat工具MemoryAnalyzer进行分析java内存溢出hprof文件
查看>>
完整性约束
查看>>
Django之restframework
查看>>
P3924 康娜的线段树
查看>>
Vue的安装和语法
查看>>
验证表单必须为数字并且只保留小数点后2位
查看>>
2-sat基础题 uvalive 3211
查看>>
Elasticsearch5.2.0部署过程的坑
查看>>
go build 不同系统下的可执行文件
查看>>
浏览器版本信息判断整理
查看>>
【我的Android进阶之旅】解决Android Studio 运行gradle命令时报错: 错误: 编码GBK的不可映射字符...
查看>>
windows 下解决 Time_Wait 和 CLOSE_WAIT 方法
查看>>
SOUI Editor使用教程
查看>>
PHP字符串的替换(preg_replace)
查看>>
责任链模式的具体应用
查看>>
Nginx安装
查看>>
Aix下查看内存命令
查看>>
[Android]JsonObject解析
查看>>
最好用的软件快速开发平台-全部源码-3800/套
查看>>