uva1356 Bridge
来源:互联网 发布:金字塔软件使用说明书 编辑:程序博客网 时间:2024/06/13 21:22
问题稍作简化就可以看成已知一条抛物线的宽度和长度,求它的高度。
这个问题并不好求,但是如果已知高度和宽度,求抛物线的长度就是一个很简单的积分了。因此我们可以二分答案。
设宽度为
#include<cstdio>#include<algorithm>#include<cmath>using namespace std;const double eps=1e-6;int D,H,B,L;double w,a;double F(double x){ return sqrt(a*x*x+1);}double get(double l,double r){ double mid=(l+r)/2; return (r-l)*(F(l)+F(r)+4*F(mid))/6;}double sim(double l,double r,double val){ double mid=(l+r)/2,x=get(l,mid),y=get(mid,r); if (fabs(val-x-y)<eps) return val; return sim(l,mid,x)+sim(mid,r,y);}double cal(double x){ a=64*x*x/(w*w*w*w); return sim(-w/2,w/2,get(0,w/2));}void solve(){ int n; double l,r,mid; scanf("%d%d%d%d",&D,&H,&B,&L); n=B/D+((B%D)?1:0); w=(double)B/n; l=0; r=H; while (r-l>eps) { mid=(l+r)/2; if (cal(mid)*n<L) l=mid; else r=mid; } printf("%.2f\n",H-l);}int main(){ int T; scanf("%d",&T); for (int K=1;K<=T;K++) { if (K>1) putchar('\n'); printf("Case %d:\n",K); solve(); }}
阅读全文
0 0
- uva1356 Bridge
- uva1356 - Bridge 自适应simpson公式
- Bridge
- Bridge
- Bridge
- Bridge
- bridge
- bridge
- Bridge
- Bridge
- Bridge
- Bridge
- 例题2.28 桥上的绳索 UVa1356
- Bridge Pattern
- Bridge pattern
- Bridge模式
- Bridge Pattern
- Bridge模式
- LSM树存储模型
- 线程和进程的区别
- mysql的5.6版本支持分区吗?
- Failed to load resource: the server responded with a status of 400 (Bad Request)
- java多个子类自动调用父类不包含的函数
- uva1356 Bridge
- Android 使用系统签名打包apk
- [web]xss攻击及如何防御
- JavaScript入门基础--数据类型
- pycharm打开html文件及在HTML文件中加载图片的问题
- 【剑指offer】旋转数组的最小数字
- 优化UITableViewCell高度计算的那些事
- 远程调用过程JSON数据过大,连接超时
- 创建进程,销毁僵尸进程