桥的间隔数为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. Careercup - Google面试题 - 5205167846719488

    2014-05-03 23:35 题目链接 原题: For a given node in binary search tree find a next largest number in searc ...

  2. AvalonDock 2.0+Caliburn.Micro+MahApps.Metro实现Metro风格插件式系统(一)

    随着IOS7由之前UI的拟物化设计变为如今的扁平化设计,也许扁平化的时代要来了,当然我们是不是该吐槽一下,苹果什么时候也开始跟风了,自GOOGLE和微软界面扁平化过后,苹果也加入了这一队伍. Aval ...

  3. 本地虚拟机中匿名ftp上传文件失败的问题

    在10.10.50.230中新建了一个匿名的ftp服务器,结果在10.10.50.241中上传文件时提示: local: README.txt remote: /var/ftp/pub/upload ...

  4. c库函数之scanf

    scanf()函数的原理 想象输入设备(键盘)连接着一个叫“缓冲”的东西,把缓冲认为是一个字符数组. 当你的程序执行到scanf时,会从你的缓冲区读东西,如果缓冲区是空的,就阻塞住,等待你从键盘输入. ...

  5. RedHat Linux下注册Apache为系统服务并设为开机启动

    1.系统环境: 操作系统:Red Hat Enterprise Linux Server release 5.4 Apache版本:httpd-2.2.19 2.注册服务 #将apachectl复制到 ...

  6. cf 359A 359B

    359A 如果有点在边上则最少两次 没有则最少操作4次 #include <cstdio> #include <cstring> #include <algorithm& ...

  7. Hibernate3中将指定的HQL语句转换成SQL语句

    import org.hibernate.engine.SessionFactoryImplementor; import org.hibernate.hql.ast.QueryTranslatorI ...

  8. Rsyslog配置

    http://blog.itpub.net/30015039/viewspace-1457009/

  9. 简单易懂的现代魔法——Play Framework攻略4

    接前文:简单易懂的现代魔法——Play Framework攻略3 1.The Object 时隔2个多月,Play Framework系列又更新了,本次的主题是:利用Play Framework实现R ...

  10. hdu 1524 A Chess Game 博弈论

    SG函数!! 代码如下: #include<stdio.h> #include<cstring> #define I(x) scanf("%d",& ...