桥的间隔数为n = ceil(B/D),每段绳子的长度为L / n,相邻两塔之间的距离为 B / n

主要问题还是在于已知抛物线的开口宽度w 和 抛物线的高度h 求抛物线的长度

弧长积分公式为:

设抛物线方程为f(x) = ax2,则这段抛物线弧长为

查积分表或者自己分部积分算一下: 

二分抛物线高度x,使得每段抛物线长度为L / n,所求答案为H - x

 #include <cstdio>
#include <cmath> inline double F(double a, double x)
{//sqrt(a^2+x^2)的原函数
double a2 = a*a, x2 = x*x;
double s = sqrt(a2+x2);
return (x*s + a2*log(x+s))/;
} double length(double w, double h)
{//宽为w,高为h的抛物线的长度
double a = *h/w/w;
double b = 0.5/a;
return *a*(F(b, w/) - F(b, ));
} int main()
{
//freopen("in.txt", "r", stdin); int T;
scanf("%d", &T);
for(int kase = ; kase <= T; kase++)
{
int D, H, B, L;
scanf("%d%d%d%d", &D, &H, &B, &L);
int n = (B-)/D + ; //间隔数
double d = (double)B / n; //间隔
double l = (double)L / n; //每段绳长
double Left = , Right = H;
while(Right - Left > 1e-)
{//二分求抛物线高度
double mid = (Right + Left) / ;
if(length(d, mid) > l) Right = mid;
else Left = mid;
}
if(kase > ) puts("");
printf("Case %d:\n%.2f\n", kase, H-Left);
} return ;
}

代码君

后面又介绍了一种Simpson自适应算法,可以求任意连续函数的积分。

维基百科辛普森法则

虽然不明白这个式子是怎么来的,但并不能阻止我们学习自适应辛普森算法。

书上还说可以将区间端点和中点的函数值作为参数传入以减少重复计算,求教。。

 #include <cstdio>
#include <cmath> double a; inline double F(double x)
{ return sqrt(+*a*a*x*x); } double simpson(double a, double b)
{
double c = (a+b)/;
return (F(a)+*F(c)+F(b))*(b-a)/;
} double asr(double a, double b, double eps, double A)
{
double c = (a+b)/;
double L = simpson(a, c), R = simpson(c, b);
if(fabs(L+R-A) <= *eps) return L + R + (L+R-A)/15.0;
return asr(a, c, eps/, L) + asr(c, b, eps/, R);
} double asr(double a, double b, double eps)
{
return asr(a, b, eps, simpson(a, b));
} double length(double w, double h)
{
a = 4.0*h/w/w;
return asr(, w/, 1e-) * ;
} int main()
{
//freopen("in.txt", "r", stdin); int T;
scanf("%d", &T);
for(int kase = ; kase <= T; kase++)
{
int D, H, B, L;
scanf("%d%d%d%d", &D, &H, &B, &L);
int n = (B-)/D + ;
double d = (double)B / n;
double l = (double)L / n;
double x = , y = H;
while(y - x > 1e-)
{
double m = (x + y) / ;
if(length(d, m) > l) y = m;
else x = m;
}
if(kase > ) puts("");
printf("Case %d:\n%.2f\n", kase, H - x);
} return ;
}

代码君

LA 3485 (积分 辛普森自适应法) Bridge的更多相关文章

  1. LA 3485 Bridge

    自适应辛普森公式模板. #include<algorithm> #include<iostream> #include<cstring> #include<c ...

  2. UVA 1356 - Bridge(自适应辛普森)

    UVA 1356 - Bridge option=com_onlinejudge&Itemid=8&page=show_problem&category=493&pro ...

  3. $Simpson$积分入门

    \(\rm{0x01}\) 前言 首先阐明一点,自适应辛普森算法(\(\rm{Adaptive ~Simpson's~ rule}\) )是一类近似算法(\(\rm{Approximation ~al ...

  4. .Uva&LA部分题目代码

    1.LA 5694 Adding New Machine 关键词:数据结构,线段树,扫描线(FIFO) #include <algorithm> #include <cstdio&g ...

  5. pytorch基础学习(二)

    在神经网络训练时,还涉及到一些tricks,如网络权重的初始化方法,优化器种类(权重更新),图片预处理等,继续填坑. 1. 神经网络初始化(Network Initialization ) 1.1 初 ...

  6. TCP(一)

    传输控制协议TCP特点:1,面向连接的运输层协议        2,每一条TCP只能有两个端点.点对点        3,TCP是可靠的,无差错,不重复,顺序到达.        4,全双工,允许通信 ...

  7. 计算几何 val.3

    目录 计算几何 val.3 自适应辛普森法 定积分 引入 辛普森公式 处理精度 代码实现 模板 时间复杂度 练习 闵可夫斯基和 Pick定理 结论 例题 后记 计算几何 val.3 自适应辛普森法 可 ...

  8. zhengrui集训笔记2

    Day_6 计算几何 点积\Large 点积点积 叉积\Large 叉积叉积 极角\Large 极角极角 < π\piπ :叉积判断 else :atan2 旋转\Large 旋转旋转 左乘第一 ...

  9. 关于redis内存分析,内存优化

    对于redis来说,什么是最重要的? 毋庸置疑,是内存. 一.reids 内存分析 redis内存使用情况:info memory 示例: 可以看到,当前节点内存碎片率为226893824/20952 ...

随机推荐

  1. 一个inline-block的样式。

    <span style="height: 31px; font-family: 宋体; font-weight: bold; color: rgb(160, 64, 0); text- ...

  2. SUID ,SGID ,Sticky

    SUID passwd:s SUID: 运行某程序时,相应进程的属主是程序文件自身的属主,而不是启动者: chmod u+s FILE chmod u-s FILE 如果FILE本身原来就有执行权限, ...

  3. 2014 Multi-University Training Contest 9

    官方解题报告:http://blog.sina.com.cn/s/blog_6bddecdc0102uzwm.html Boring Sum http://acm.hdu.edu.cn/showpro ...

  4. PE文件结构详解(一)基本概念

    PE(Portable Execute) 文件是Windows下可执行文件的总称,常见的有DLL,EXE,OCX,SYS等,事实上,一个文件是否是PE文件与其扩展名无关,PE文件可以是任 何扩展名.那 ...

  5. uva 11489

    简单博弈 #include <cstdio> #include <cstdlib> #include <cmath> #include <map> #i ...

  6. js刷新

    jquery刷新页面的实现代码(局部及全页面刷新) 发布:mdxy-dxy 字体:[增加 减小] 类型:转载 jquery刷新页面的实现代码(局部及全页面刷新) ,需要的朋友可以参考下. 局部刷新: ...

  7. synergy--共享你的键鼠

    synergy用来分享一套键鼠,作用于多台主机.可作用于linux.Windows和mac平台.工作方式是:将一台主机作为服务器端,然后服务器端将会分享自己的键鼠,另一台主机作为客户端连接服务端就可以 ...

  8. linux入门教程(八) Linux磁盘管理

    [查看磁盘或者目录的容量 df 和 du] df 查看已挂载磁盘的总容量.使用容量.剩余容量等,可以不加任何参数,默认是按k为单位显示的 df常用参数有 –i -h -k –m等 -i 使用inode ...

  9. [SharePoint 2013 入门教程 2 ] 创建WEB应用程序,网站集,网站

    SharePoint 2013 的 Hello World 由大到小  创建WEB应用程序(老母),网站集(儿子),网站(孙子) 直接确定,其余都默认 填入标题,选好模板.网站集 儿子就有了. 点击页 ...

  10. 毕向东JAVA视频讲解(第六课)

    用java语言对现实生活中的事物进行描述. 通过类的形式来体现的. 怎么描述呢? 对于事物描述通常只关注两方面. 一个是属性,一个是行为. 只要明确该事物的属性和行为并定义在类中即可. 对象:其实就是 ...