题目大意

你的任务是修建一座大桥。桥上等距地摆放着若干个塔,塔高为H,宽度忽略不计。相邻两座塔之间的距离不能超过D。塔之间的绳索形成全等的对称抛物线。桥长度为B,绳索总长为L,如下图所示求建最少的塔时绳索的最下端离地的高度y。

【输入格式】
输入第一行为测试数据组数T。每组数据包含4个整数D,H,B,L(B<=L)。

【输出格式】
对于每组数据,输出绳索底部离地高度,保留两位小数。

间隔数为n=[(B+D-1)/D],所以间隔和每个间隔的绳子长分别为w=B/n,L=L/n

根据微积分,一个二次函数的弧长len=∫√(1+[f'(x)]2)

不懂看https://wenku.baidu.com/view/7c3f0a8a02d276a200292e12.html

因为要确定y=kx2的k,找到可以使len=L的k,len的计算用辛普森

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<cmath>
 6 using namespace std;
 7 double k,D,H,B,L,eps=1e-5,ans,Eps=1e-5;
 8 double F(double X)
 9 {
10   return sqrt(1+4.0*k*k*X*X);
11 }
12 double simpson(double l,double r)
13 {
14   return (r-l)*(F(l)+F(r)+4.0*F((l+r)/2.0))/6.0;
15 }
16 double asr(double l,double r,double eps,double A)
17 {
18   double mid=(l+r)/2.0;
19   double LS=simpson(l,mid),RS=simpson(mid,r);
20     if (fabs(LS+RS-A)<=15.0*eps) return LS+RS+(LS+RS-A)/15.0;
21   return asr(l,mid,eps/2.0,LS)+asr(mid,r,eps/2.0,RS);
22 }
23 int main()
24 {int T,t,cnt;
25   double w;
26   cin>>T;
27   while (T--)
28     {
29       scanf("%lf%lf%lf%lf",&D,&H,&B,&L);
30       int n=(B+D-1)/D;
31       w=B/(double)n;
32       L=L/(double)n;
33       double l=0,r=H;
34       while (l+Eps<r)
35     {
36       double mid=(l+r)/2.0;
37       k=4.0*mid/(w*w);
38       if (2.0*asr(0,w/2.0,eps,simpson(0,w/2.0))-L<Eps) ans=mid,l=mid;
39       else r=mid;
40     }
41       cnt++;
42       if (cnt>1) printf("\n");
43       printf("Case %d:\n%.2lf\n",cnt,H-ans);
44     }
45 }

转载于:https://www.cnblogs.com/Y-E-T-I/p/8288066.html

UVA 3485 Bridge相关推荐

  1. uva 10037——Bridge

    题意:有一个桥,每次只能两个人拿着手电筒通过然后一个人拿着电筒回来,然后让新人过去,给出每个人的过桥时间,问最后总的最小时间. 思路:贪心.1个人2个人好考虑,排好序,三个人是13,1,12,大于3个 ...

  2. π-Algorithmist分类题目(1)

    原题网站:Algorithmist,http://www.algorithmist.com/index.php/Main_Page π-Algorithmist分类题目(1) Sorting UVAL ...

  3. sicily题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  4. [sicily]部分题目分类

    sicily题目分类 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. ...

  5. Sicily 题目分类

    依照自己水平挑着做→ →~~ 1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 ...

  6. 编程题目分类(剪辑)

    1. 编程入门 2. 数据结构 3. 字符串 4. 排序 5. 图遍历 6. 图算法 7. 搜索:剪枝,启发式搜索 8. 动态规划/递推 9. 分治/递归 10. 贪心 11. 模拟 12. 算术与代 ...

  7. 【UVA - 10037】Bridge(过河问题,经典贪心)

    题干: 题目大意: 有N个人要过桥,每个人速度不同,只有一个手电筒,每次最多只能过去两个人,问所有人最短的过桥时间为多少 解题报告: 首先让最快的两个人最后过,然后我们分奇偶考虑,分别处理到剩下三个人 ...

  8. (连通图 模板题 无向图求桥)Critical Links -- UVA -- 796

    链接: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  9. UVa Online Judge 工具網站

    UVa Online Judge 工具網站 转自http://www.csie.ntnu.edu.tw/~u91029/uva.html Lucky貓的ACM園地,Lucky貓的 ACM 中譯題目 M ...

最新文章

  1. matlab绘制bland-altman,制作Bland-Altman图的步骤和程序(以SPSS作图为例讲解)
  2. neo4j 查询同一节点的两个上级_WhatRoute for Mac(互联网流量诊断查询工具)
  3. Shell入门(十)之echo
  4. 匿名函数、冒泡排序,二分法, 递归
  5. Storm精华问答 | Storm如何连接MySQL?
  6. Qt图形界面编程入门(创建一个简单的程序)
  7. Vue (响应式原理-模拟-1-vue)
  8. Map/Reduce
  9. vs2005配置c语言连接mysql
  10. SAP License:赛锐信息访谈启示录(二)
  11. 剑指|| offer1整数除法
  12. Thread 类的属性和方法
  13. ‘net’ 不是内部命令或外部命令,也不是可运行的程序或批处理文件
  14. (18)全民小视频引流脚本模块化开发12-任务总数与时间间隔By飞云脚本学院
  15. Go语言之flag基础用法
  16. 工作多年,分享16条实用职场经验给你
  17. 加速ubuntu开机速度
  18. RCLAMP0544T 国产替代上海雷卯ULC0544T
  19. 如何下载PLSQL Developer历史版本?
  20. 智能指纹门锁芯片方案技术开发

热门文章

  1. 没有required_springboot-使用OpenAPI之后我再也没有写过接口文档
  2. android blcr 编译,BLCR 基本环境搭建【zz~】
  3. 华为服务器如何修改ftp密码,ftp怎么改服务器密码
  4. linux grpc,grpc linux下的编译使用-Go语言中文社区
  5. 图论--二分图最大匹配(匈牙利算法)--模板
  6. elasticsearch的分布式架构原理
  7. 设计模式大集锦 程序员面试全攻略
  8. windows远程访问树莓派方法(+树莓派启动方法)
  9. 【Transformer】Are Transformers More Robust Than CNNs?
  10. 【Transformer】Deformable DETR: deformable transformers for end-to-end object detection