【题目分析】

一看题目,直接把椭圆积分起来就可以了嘛。

然后发现椭圆比较难积分,还是算了吧。

用Simpson积分硬上。

大概就是用二次函数去拟合面积。

【代码】

  1. #include <cstdio>
  2. #include <cstring>
  3. #include <cmath>
  4. #include <cstdlib>
  5.  
  6. #include <map>
  7. #include <set>
  8. #include <queue>
  9. #include <string>
  10. #include <iostream>
  11. #include <algorithm>
  12.  
  13. using namespace std;
  14.  
  15. #define maxn 500005
  16. #define eps 1e-8
  17. #define db double
  18. #define ll long long
  19. #define inf 0x3f3f3f3f
  20. #define F(i,j,k) for (int i=j;i<=k;++i)
  21. #define D(i,j,k) for (int i=j;i>=k;--i)
  22.  
  23. void Finout()
  24. {
  25. #ifndef ONLINE_JUDGE
  26. freopen("in.txt","r",stdin);
  27. // freopen("out.txt","w",stdout);
  28. #endif
  29. }
  30.  
  31. int Getint()
  32. {
  33. int x=0,f=1; char ch=getchar();
  34. while (ch<'0'||ch>'9') {if (ch=='-') f=-1; ch=getchar();}
  35. while (ch>='0'&&ch<='9') {x=x*10+ch-'0'; ch=getchar();}
  36. return x*f;
  37. }
  38.  
  39. db a,b,l,r;
  40. int T;
  41.  
  42. db cal(db l,db r)
  43. {
  44. db fl=2*sqrt((a*a*b*b-b*b*l*l)/(a*a)),fr=2*sqrt((a*a*b*b-b*b*r*r)/(a*a)),mid=(l+r)/2;
  45. db fm=2*sqrt((a*a*b*b-b*b*mid*mid)/(a*a));
  46. return ((r-l)/6)*(fl+fr+4*fm);
  47. }
  48.  
  49. db simpson(db l,db r)
  50. {
  51. db mid=(l+r)/2,s1=cal(l,r),s2=cal(l,mid)+cal(mid,r);
  52. if (s2-s1<=eps) return s2;
  53. else return simpson(l,mid)+simpson(mid,r);
  54. }
  55.  
  56. int main()
  57. {
  58. Finout();
  59. T=Getint();
  60. while (T--)
  61. {
  62. scanf("%lf%lf%lf%lf",&a,&b,&l,&r);
  63. printf("%.3f\n",simpson(l,r));
  64. }
  65. }

  

HDU 1724 Ellipse ——Simpson积分的更多相关文章

  1. hdu 1724 Ellipse simpson积分

    /* hdu 1724 Ellipse simpson积分 求椭圆的部分面积 simpson积分法 http://zh.wikipedia.org/zh-tw/%E8%BE%9B%E6%99%AE%E ...

  2. HDU 1724 Ellipse [辛普森积分]

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

  3. hdu 1724 Ellipse——辛普森积分

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1724 #include<cstdio> #include<cstring> #in ...

  4. HDU 1724 Ellipse 【自适应Simpson积分】

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

  5. HDU 1724 Ellipse (自适应辛普森积分)

    题目链接:HDU 1724 Problem Description Math is important!! Many students failed in 2+2's mathematical tes ...

  6. HDU 1724 Ellipse 自适应simpson积分

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

  7. hdu 1724 : Ellipse 【Simpson积分】

    题目链接 题意:给出椭圆方程中的a和b,再给出l.r,求l到r的积分的二倍. 输出时要求精度控制为保留到小数点后3位,如下代码中,eps设为1e-9 1e-8时均TLE,1e-4可以AC,1e-3会W ...

  8. hdu 1724 Ellipse —— 自适应辛普森积分

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1724 函数都给出来了,可以用辛普森积分: 一开始 eps = 1e-8 TLE了,答案只要三位小数,那么 ...

  9. HDU Ellipse(simpson积分)

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

随机推荐

  1. HDU 1398 Square Coins 平方硬币 (普通母函数,水)

    题意: 有17种硬币,每种的面值为编号的平方,比如 1,4,9,16.....给出一个数字,求组成这个面值有多少种组法? 思路: 用普通母函数解,主要做的就是模拟乘法,因为硬币是无限的,所以每个构造式 ...

  2. Win7下vc++6.0打开项目出现问题的解决方案

    Win7下vc++6.0打开项目出现Microsoft(R) Developer Studio以及Unable to register this add-in because its DLLRegis ...

  3. Fedora19 有关输入法的无法切换问题 和 终端的快捷设置问题

    Fedora19 有关输入法的无法切换问题 和 终端的快捷设置问题 1.首先,要单击右上角的设置输入法的"区域与语言设置",要设置为“为每个窗口设置不同的输入源”. 还有,刚使用的 ...

  4. 签名ipa,让其它手机也安装

    开发的时候,需要将app让其它人装上测试,虽然通过xcode可以使用编译进去,但是仍显不方便. 网上有个工具, http://code.google.com/p/iresign/ 通过这个工具,使用自 ...

  5. 剑指offer42 左旋转字符串

    自己想的一个新的写法,如果不排除length=0的情况,下面那个while是死循环 class Solution { public: string LeftRotateString(string st ...

  6. Bootstrap 网格系统(Grid System)实例2

    Bootstrap 网格系统(Grid System):堆叠水平,两种样式 <!DOCTYPE html><html><head><meta http-equ ...

  7. 【树状数组 思维题】luoguP3616 富金森林公园

    树状数组.差分.前缀和.离散化 题目描述 博艾的富金森林公园里有一个长长的富金山脉,山脉是由一块块巨石并列构成的,编号从1到N.每一个巨石有一个海拔高度.而这个山脉又在一个盆地中,盆地里可能会积水,积 ...

  8. 一次下载多个文件的解决思路-JS

    一次下载多个文件的解决思路(iframe) - Eric 真实经历 最近开发项目需要做文件下载,想想挺简单的,之前也做过,后台提供下载接口,前端使用window.location.href就行了呗.不 ...

  9. 【ios】IOS返回3824错误

    后台接口数据返回有NULL格式的数据

  10. docker:安装mysql多个

    文章来源:https://www.cnblogs.com/hello-tl/p/9238298.html 1.首先安装docker 参照一下网址安装docker docker:安装 https://w ...