做此题完全是为了练积分。

【普通求导版】

Select Code

#include<cstdio>
#include<cmath>
using namespace std;
typedef double real;
const real eps=1e-5;
int cas,Cas,D,H,B,L;
real F(real a,real x){
real a2=a*a;
real x2=x*x;
return (x*sqrt(a2+x2)+a2*log(fabs(x+sqrt(a2+x2))))/2.0;
}
real calc(real w,real h){
real a=4.0*h/(w*w);
real A=1.0/(2.0*a);
return (F(A,w/2.0)-F(A,0))*4.0*a;
}
int main(){
for(scanf("%d",&cas);cas--;){
scanf("%d%d%d%d",&D,&H,&B,&L);
int n=(B+D-1)/D;
real D1=(real)B/n;
real L1=(real)L/n;
real l=0.0,r=H,mid;
while(l+eps<r){
mid=(l+r)/2.0;
if(calc(D1,mid)<L1) l=mid;else r=mid;
}
printf("Case %d:\n%.2lf\n",++Cas,H-l);
if(cas) putchar('\n');
}
return 0;
}

【辛普森自适应版】

Select Code

#include<cstdio>
#include<cmath>
using namespace std;
typedef double real;
const real eps=1e-5;
int cas,Cas,D,H,B,L;
real a;
real F(real x){
real a2=a*a;
real x2=x*x;
return sqrt(1.0+4.0*a2*x2);
}
real simpson(real a,real b){
real c=(a+b)/2.0;
return (F(a)+4.0*F(c)+F(b))*(b-a)/6.0;
}
real asr(real a,real b,real eps,real A){
real c=(a+b)/2.0;
real L=simpson(a,c),R=simpson(c,b);
if(fabs(L+R-A)<=15*eps) return L+R+(L+R-A)/15;
return asr(a,c,eps/2,L)+asr(c,b,eps/2,R);
}
real asr(real a,real b,real eps){
return asr(a,b,eps,simpson(a,b));
}
real calc(real w,real h){
a=4.0*h/(w*w);
return asr(0,w/2.0,eps)*2.0;
}
int main(){
for(scanf("%d",&cas);cas--;){
scanf("%d%d%d%d",&D,&H,&B,&L);
int n=(B+D-1)/D;
real D1=(real)B/n;
real L1=(real)L/n;
real l=0.0,r=H,mid;
while(l+eps<r){
mid=(l+r)/2.0;
if(calc(D1,mid)<L1) l=mid;else r=mid;
}
printf("Case %d:\n%.2lf\n",++Cas,H-l);
if(cas) putchar('\n');
}
return 0;
}

LA3485 Bridge[(辛普森自适应)微积分]的更多相关文章

  1. uva 1356 Bridge ( 辛普森积分 )

    uva 1356 Bridge ( 辛普森积分 ) 不要问我辛普森怎么来的,其实我也不知道... #include<stdio.h> #include<math.h> #inc ...

  2. LA3485 Bridge

    题意 PDF 分析 以<训练指南>上的分析为准. 二分法时间复杂度\(O(\log v)\) 代码 #include<bits/stdc++.h> #define rg reg ...

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

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

  4. 洛谷4525 & 4526:【模板】自适应辛普森法——题解

    参考:https://phqghume.github.io/2018/05/19/%E8%87%AA%E9%80%82%E5%BA%94%E8%BE%9B%E6%99%AE%E6%A3%AE%E6%B ...

  5. LA 3485 (积分 辛普森自适应法) Bridge

    桥的间隔数为n = ceil(B/D),每段绳子的长度为L / n,相邻两塔之间的距离为 B / n 主要问题还是在于已知抛物线的开口宽度w 和 抛物线的高度h 求抛物线的长度 弧长积分公式为: 设抛 ...

  6. HAUT 1261地狱飞龙 自适应辛普森 数值积分

    1261: 地狱飞龙 时间限制: 1 秒  内存限制: 64 MB 提交: 300  解决: 68 题目描述 最近clover迷上了皇室战争,他抽到了一种地狱飞龙,很开心.假设地域飞龙会对距离为d的敌 ...

  7. 【自适应辛普森积分】hdu1724 Ellipse

    Ellipse Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Sub ...

  8. 【LA3485】 Bridge

    前言 哈哈哈,垃圾微积分哈哈哈 前置知识:自适应Simpson法与微积分初步,学会编程 Solution 考虑一下我们有的是什么: 一段桥梁的横向距离,悬线的长度,以及高度. 我们发现如果我们重新设一 ...

  9. 洛谷P4525 【模板】自适应辛普森法1(simpson积分)

    题目描述 计算积分 结果保留至小数点后6位. 数据保证计算过程中分母不为0且积分能够收敛. 输入输出格式 输入格式: 一行,包含6个实数a,b,c,d,L,R 输出格式: 一行,积分值,保留至小数点后 ...

随机推荐

  1. pandas set_index和reset_index的用法

    1.set_index DataFrame可以通过set_index方法,可以设置单索引和复合索引. DataFrame.set_index(keys, drop=True, append=False ...

  2. WebSocket的几个模块(node.js)(未完)

    1.ws模块 npm install ws 2.nodejs-websocket npm nodejs-websocket 3.socket.io模块 npm install socket.io

  3. unity, 获取mesh名称

    正确的获取mesh名称的方法: MeshFilter meshFilter=node.GetComponent<MeshFilter>();    string meshName=mesh ...

  4. Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php

    Atitit.软件开发概念(11)--网络子系统--url编码 空格问题URLEncoder java js php 1. RFC2396标准 including HTML 4.01 section  ...

  5. poj 2524 Ubiquitous Religions 一简单并查集

    Ubiquitous Religions   Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 22389   Accepted ...

  6. 打印十字图 queue 搞定

    题目描述 小明为某机构设计了一个十字型的徽标(并非红十字会啊),如下所示: ..$$$$$$$$$$$$$.. ..$...........$.. $$$.$$$$$$$$$.$$$ $...$... ...

  7. Python正则表达式中的re.S的作用

    在Python的正则表达式中,有一个参数为re.S.它表示“.”(不包含外侧双引号,下同)的作用扩展到整个字符串,包括“\n”.看如下代码: import re a = '''asdfhellopas ...

  8. 关于C与python交互设想及文章汇总

    gui: gtk by c 后台: python Python实例浅谈之三Python与C/C++相互调用 Python 与 C/C++ 交互的几种方式 C语言 + GTK3+ Visual Stud ...

  9. Windows操作系统下 使用c++ WIN32API禁用控制台最小化和关闭按钮

    #include<Windows.h> //屏蔽控制台最小按钮和关闭按钮 HWND hwnd = GetConsoleWindow(); HMENU hmenu = GetSystemMe ...

  10. [开机启动]Linux开机自启和运行级别

    嵌入式系统中程序自启动方法 在很多嵌入式系统中,由于可用资源较少,常常在系统启动后就直接让应用程序自动启动,以减少用户操作和节省资源.如何让自己的应用程序自动启动呢?    在Linux系统中,配置应 ...