码迷,mamicode.com
首页 > 其他好文 > 详细

HDU - 1724 Ellipse(simpson积分)(入门模板题)

时间:2018-08-04 18:47:52      阅读:149      评论:0      收藏:0      [点我收藏+]

标签:memset   open   print   col   函数   include   odi   ext   sim   

原题链接

题意:

给定 a,b,l,r,求技术分享图片 与x = l,x = r 围成的封闭图形的面积。

思路:

大佬可以直接算一下原函数就出来了,当没法计算或者很难计算的时候就可以用 自适应simpson 积分来逼近真实值。

 1 /*
 2 * @Author: windystreet
 3 * @Date:   2018-08-04 16:24:01
 4 * @Last Modified by:   windystreet
 5 * @Last Modified time: 2018-08-04 16:24:33
 6 */
 7 
 8 #include<bits/stdc++.h>
 9 
10 using namespace std;
11 
12 #define X first
13 #define Y second
14 #define eps  1e-10                        // 精度根据题目改变
15 #define gcd __gcd
16 #define pb push_back
17 #define PI acos(-1.0)
18 #define lowbit(x) (x)&(-x)
19 #define bug printf("!!!!!\n");
20 #define mem(x,y) memset(x,y,sizeof(x))
21 
22 typedef long long LL;
23 typedef long double LD;
24 typedef pair<int,int> pii;
25 typedef unsigned long long uLL;
26 
27 const int maxn = 1e5+2;
28 const int INF  = 1<<30;
29 const int mod  = 1e9+7;
30 
31 double a,b;
32 
33 double f(double x){
34     return b*(sqrt(1.0-(x*x)/(a*a)));    // 函数根据题目改变
35 }
36 double simpson(double L ,double R){
37     return (R-L)*(f(L)+4.0*f((L+R)/2.0)+f(R))/6.0;
38 }
39 double asr(double L,double R){
40     double mid = (L+R)/2.0;
41     double res = simpson(L,R);
42     double left = simpson(L,mid),right = simpson(mid,R);
43     if(fabs(left+right-res)<eps)return left + right;
44     else return asr(L,mid)+asr(mid,R);
45 }
46 
47 
48 void solve(){
49     double l,r;
50     scanf("%lf%lf%lf%lf",&a,&b,&l,&r);
51     double ans = asr(l,r);
52     printf("%.3lf\n",2.0*ans);
53     
54     return;
55 }
56 
57 int main()
58 {
59 //    freopen("in.txt","r",stdin);
60 //    freopen("out.txt","w",stdout);
61 //    ios::sync_with_stdio(false);
62     int t = 1;
63     scanf("%d",&t);
64     while(t--){
65     //    printf("Case %d: ",cas++);
66         solve();
67     }
68     return 0;
69 }

 

HDU - 1724 Ellipse(simpson积分)(入门模板题)

标签:memset   open   print   col   函数   include   odi   ext   sim   

原文地址:https://www.cnblogs.com/windystreet/p/9419335.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!