LA3485 Bridge[(辛普森自适应)微积分]

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

【普通求导版】

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;
}
时间: 2024-10-12 11:37:57

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

BZOJ 1502 NOI2005 月下柠檬树 Simpson自适应公式

题目大意:给定一棵由圆台和圆锥构成的柠檬树,月光以α的夹角平行射向地面,求阴影部分面积 补充题目大意:看到这题我产生了心理阴影,求阴影部分面积 题目不好分析,但其实就是求一堆圆和一堆梯形的面积交 样例如图(画的有点烂),将顶点看做半径为0的圆,则图中圆的半径即为给定圆的半径,圆心距为h/tan(α),直线为两圆公切线 这题我们采用辛普森自适应公式 首先辛普森公式见度受百科 http://baike.baidu.com/view/2710883.htm?fr=aladdin 比较遗憾的是 辛普森公

《算法竞赛入门经典——训练指南》第二章题库

UVa特别题库 UVa网站专门为本书设立的分类题库配合,方便读者提交: http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=442 注意,下面注有"extra"的习题并没有在书中出现,但在上面的特别题库中有,属于附加习题. 基础练习 (Basic Problems) UVa11388 GCD LCM UVa11889 Benefit UVa10943 How do y

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

UVA 1356 - Bridge 题目链接 题意:一个桥长为B,桥上建电线杆,杆高为H,两杆之间距离不超过D,电线杆总长为L,杆子都是等距的,现在建最少的电线杆,问这时候电线离地面高度是多少 思路:二分高度,求出电线长,判断长度够不够即可,那么问题就变成怎么求弧长 求弧长公式为∫w/201+(f′(x)2)??????????√, 建立坐标系使得f(x)=ax2,带入点(w/2, h)求出a,得到方程 那么问题就变成怎么求这个积分了 利用辛普森自适应法,去求即可 代码: #include <c

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

Ellipse Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 2502    Accepted Submission(s): 1126 Problem Description Math is important!! Many students failed in 2+2's mathematical test, so let's AC

[BZOJ1502]月下柠檬树(自适应辛普森积分)

1502: [NOI2005]月下柠檬树 Time Limit: 5 Sec  Memory Limit: 64 MBSubmit: 1387  Solved: 739[Submit][Status][Discuss] Description 李哲非常非常喜欢柠檬树,特别是在静静的夜晚,当天空中有一弯明月温柔地照亮地面上的景物时,他必会悠闲地 坐在他亲手植下的那棵柠檬树旁,独自思索着人生的哲理.李哲是一个喜爱思考的孩子,当他看到在月光的照射下 柠檬树投在地面上的影子是如此的清晰,马上想到了一个问

自适应辛普森法

Simpson公式 设\(f(x)\)为原函数,$g(x)=Ax2+Bx+C $ 为拟合后的函数,则有: \[ \int_{a}^{b}f(x)dx \approx \int_{a}^{b}Ax^2+Bx+C = \frac{A}{3}(b^3-a^3)+\frac{B}{2}(b^2-a^2)+C(a-b) =\frac{(b-a)}{6}(f(a)+f(b)+4f(\frac{a+b}{2})) \] 然后就得到了Simpson公式 \[ \int_{a}^{b}f(x)dx \approx

自适应辛普森了解一下

A 了这道超短的紫题,来发表一下自己的一些想法... 简单介绍辛普森这玩意儿 不如先学学泰勒展开? 首先泰勒展开大家都听说过吧?[雾 没听说过?安利某知乎回答:苍老师教你如何更好地记忆泰勒展开 然后你就知道了,泰勒展开其实是对于某个函数在一个点不断去高阶求导,然后用求导得到的信息构造一个多项式,使得这个多项式在一定范围内几乎和原函数拟合(可以理解为接近重合的意思吧...) 类比到辛普森? 那么其实自适应辛普森也是类似的道理,只不过它是用了分治的方法去构造这个 假 拟合 多项式(其实就是二次函数,

P4525 【模板】自适应辛普森法1

P4525 [模板]自适应辛普森法1 1 #include <bits/stdc++.h> 2 using namespace std; 3 const double eps = 1e-6; 4 double a, b, c, d, l, r; 5 inline double f(double x) { 6 return (c*x+d)/(a*x+b); 7 } 8 inline double simpson(double l, double r) { 9 double mid = (l+r)

BZOJ 1502 NOI 2005 月下柠檬树 计算几何 自适应辛普森积分

题目大意:有一个由圆锥和圆台组成的柠檬树,在月亮发出的平行光下,可以形成一个影子,求这个影子的面积. 思路:理解投影的性质:只要是平行光线,投影在水平面上,所得的图形都与原图形全等. 知道了这一点我们就可以画画图,分析就知道,其实柠檬树的影子,就是一些园和等腰梯形的面积的并.(如下图,样例) 运用计算几何的知识就可以得到圆的方程和圆的公切线的方程,然后得到一个连续的函数.最后这个题就成为一直函数的解析式,求这个函数与X轴之间的面积. 套用辛普森积分:Simpson(l,r) = (F(l) +