模板题~

QAQ话说Simpson法的原理我还是不太懂…如果有懂的dalao麻烦告诉我~

意:每次给一个椭圆的标准方程,求夹在直线$x=l$和$x=r$之间的面积


  • Simpson法

(好像有时候也被叫Simpson公式,Simpson积分什么的…看到这里的人应该都知道这个是用来干嘛的吧)

对一段小区间$[l,r]$取奇数个点,然后把区间平均分成$n$段:$x_0,x_1,x_2, \cdots,x_n$,每段长度$\Delta x$,那么:

$\int_l^r f(x) dx \approx  \frac{\Delta x}{3}(f(x_0)+4f(x_1)+f(x_2))+ \frac{\Delta x}{3}(f(x_2)+4f(x_3)+f(x_4)) + \cdots +\frac{\Delta x}{3}(f(x_{n-2})+4f(x_{n-1})+f(x_n))$

$n$取得越多答案越准确,时间开销也就越大,然后$n$取多少就是个问题了~

  • 三点Simpson法

对一个区间$[l,r]$,直接划分成两段三个点,也就是取中点$mid$,然后用Simpson法算出答案

  • 自适应Simpson法(Adaptive Simpson's Rule)

可以根据情况来划分区间,下面就说一下过程…

设精度要求为$eps$,我们对于每一段区间$[l,r]$,取中点$mid$,分别用三点Simpson法算出区间$[l,r],[l,mid],[mid,r]$的值$S_1,S_2,S_3$,如果$|S1-S2-S3|<15 eps$那么就直接得出结果$S_2+S_3-(S_2+S_3-S_1)/15)$,否则递归处理左右两断区间,精度减小一半

然后回到这题就很简单啦,化简一下直接套模板

具体看代码

 1 #include<cstdio>
2 #include<cmath>
3 using namespace std;
4
5 int T;
6
7 double a,b;
8
9 inline double F(double x)
10 {
11 return sqrt(b*(1-x*x/(a)));
12 }
13
14 inline double simpson(double l,double r)
15 {
16 double mid=l+(r-l)/2;
17 return (F(l)+F(r)+4*F(mid))*(r-l)/6;
18 }
19
20 inline double asr(double l,double r,double eps,double A)
21 {
22 double mid=l+(r-l)/2;
23 double L,R;L=simpson(l,mid);R=simpson(mid,r);
24 if(fabs(L+R-A)<=15.0*eps)return L+R+(L+R-A)/15.0;
25 return asr(l,mid,eps/2,L)+asr(mid,r,eps/2,R);
26 }
27
28 inline double solve(double l,double r,double eps)
29 {
30 return asr(l,r,eps,simpson(l,r));
31 }
32
33 int main()
34 {
35 scanf("%d",&T);
36
37 while(T--)
38 {
39 double eps=1e-4;
40 double l,r;
41 scanf("%lf%lf%lf%lf",&a,&b,&l,&r);a=a*a;b=b*b;
42 printf("%.3lf\n",solve(l,r,eps)*2.0);
43 }
44
45 return 0;
46 }

[日常摸鱼]HDU1724 Ellipse-自适应Simpson法的更多相关文章

  1. [日常摸鱼]bzoj1502[NOI2005]月下柠檬树-简单几何+Simpson法

    关于自适应Simpson法的介绍可以去看我的另一篇blog http://www.lydsy.com/JudgeOnline/problem.php?id=1502 题意:空间里圆心在同一直线上且底面 ...

  2. 自适应Simpson法与积分初步

    前言 不知道为什么,今天感觉想要写一下数学的东西,然后就看了一下我还有这个模板不会,顺手写了一下. 没有学过微积分的最好还是看一下求导为好. 求导 听说很多人都不会求导,我写一下吧qwq 令\(f(x ...

  3. 洛谷P4207 [NOI2005]月下柠檬树(计算几何+自适应Simpson法)

    题面 传送门 题解 我还好奇自适应辛普森法干嘛用的呢--突然想起来积分的一个用处就是求曲边图形的面积-- 我们先来考虑一下这些投影是什么形状 一个圆的投影还是它自己 一个圆锥的投影是一个圆加上一个点, ...

  4. HDU 1724 Ellipse 自适应simpson积分

    simpson公式是用于积分求解的比较简单的方法(有模板都简单…… 下面是simpson公式(很明显 这个公式的证明我并不会…… (盗图…… 因为一段函数基本不可能很规则 所以我们要用自适应积分的方法 ...

  5. Hash 日常摸鱼笔记

    本篇文章是Hash在信息学竞赛中的应用的学习笔记,分多次更新(已经有很多坑了) 一维递推 首先是Rabin-Karp,对于一个长度为\(m\)的串\(S\) \(f(S)=\sum_{i=1}^{m} ...

  6. [日常摸鱼]bzoj1257余数之和

    题意:输入$k,n$,求$\sum_{i=1}^n k \mod i$ $k \mod i=k-i*\lfloor \frac{k}{i} \rfloor $,$n$个$k$直接求和,后面那个东西像比 ...

  7. [日常摸鱼]bzoj1001狼抓兔子-最大流最小割

    题意就是求最小割- 然后我们有这么一个定理(最大流-最小割定理 ): 任何一个网络图的最小割中边的容量之和等于图的最大流. (下面直接简称为最大流和最小割) 证明: 如果最大流>最小割,那把这些 ...

  8. [日常摸鱼]pojKaka's Matrix Travels-拆点+最大费最大流

    方格取数的升级版,每个格子最多取一次. $k=1$的话就是个普及组的dp题,$k=2$就是在之前的基础上多加两维. 然而现在$k$太大了当然就不dp啦 对于$k=1$的情况我们还可以把$(i,j)$向 ...

  9. [日常摸鱼]loj6000「网络流 24 题」搭配飞行员

    题面 应该是二分图匹配,不过我写的是网络最大流. dinic求二分图最大匹配:加个源点和汇点,源点连向二分图的一边所有点,二分图的另一边所有点连向汇点,很明显这样得到的最大流就是这个二分图的最大匹配. ...

随机推荐

  1. 还不懂Java高并发的,建议看看这篇阿里大佬的总结,写的非常详细

    前言 进程是计算机中程序关于某几何数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位.是操作系统结构的基础 线程可以说是轻量级的进程,是程序执行的最小单位,使用多线程而不用多进程去进行并发程 ...

  2. 下载器Folx怎么安装使用

    应该使用哪个下载工具?这个如果是Windows上会有无数答案的问题,在Mac上却变得异常的纠结.比如Leech和Aria2,这两款软件,前者功能相对比较简单,后者的配置又稍微有点复杂,很难找到一款相对 ...

  3. 需要登录才能下载的文件可以用Folx下载吗

    用苹果电脑的小伙伴有没有发现,有时候文件即时有下载链接也还是要先登录才能下载,那这样的文件用下载器Folx还能下载码?下面小编将在Mac系统平台上,通过一篇教程教大家利用Folx 5的密码管理来保存网 ...

  4. 蓝桥杯——快速排序(2018JavaB组第5题9分)

    快速排序(18JavaB5,9') 以下代码可以从数组a[]中找出第k小的元素. 它使用了类似快速排序中的分治算法,期望时间复杂度是O(N)的. 请仔细阅读分析源码,填写划线部分缺失的内容. impo ...

  5. ConvTranspose2d

    nn.ConvTranspose2d的功能是进行反卷积操作 nn.ConvTranspose2d(in_channels, out_channels, kernel_size, stride=1, p ...

  6. High-Resolution Image Inpainting using Multi-Scale Neural Patch Synthesis

    论文来源:CVPR 2017 摘要 之前方法的缺点:之前的方法是基于语义和上下文信息的,在填充较大holes的表现得很好,能够捕获更高级的图像特征,但是由于内存限制和难以训练网络的因素,只能处理分辨率 ...

  7. T-SQL——基础语法

    目录 0. 定义变量 1. 批处理 2. 条件逻辑--IF 3. 逻辑分支--CASE 4. 循环语句--WHILE 5. 附录--关于CASE表达式的实现函数 6. 参考 shanzm-2020年1 ...

  8. Bootstrap Blazor 组件介绍 Table (一)自动生成列功能介绍

    Bootstrap Blazor 是一套企业级 UI 组件库,适配移动端支持各种主流浏览器,已经在多个交付项目中使用.通过本套组件可以大大缩短开发周期,节约开发成本.目前已经开发.封装了 70 多个组 ...

  9. layer 父弹窗获取子弹窗内的dom节点元素和变量

    1 var body = layer.getChildFrame('body', index); //获取子弹窗的dom节点 2 3 var iframeWin = window[layero.fin ...

  10. 06_Intent和IntentFilter

    Intent是同一个或不同的应用中的组件之间的消息传递的媒介,是一个将要执行动作的抽象描述,一般来说是作为参数来使用. Intent描述要启动的基本组件: IntentFilter对组件进行过滤. 下 ...