2 条题解

  • 0
    @ 2025-10-8 16:50:48

    G57 自适应辛普森积分【计算几何】

    #include<bits/stdc++.h>
    using namespace std;
    const double eps=1e-10;
    double a;
    double f(double x)
    {
        return pow(x, a/x - x);
    }
    double simpson(double l, double r)
    {
        return (r-l)*( f(l) + f(r) + 4*f( (l+r)/2 ) )/6;
    }
    double asr(double l, double r, double ans)
    {
        double m=(l+r)/2, ls=simpson(l, m), rs=simpson(m, r);
        if( fabs(ls+rs-ans) < eps ) return ans;
        return asr(l, m, ls) + asr(m, r, rs);
    }
    int main()
    {
        freopen("a.in", "r", stdin); freopen("a.out", "w", stdout);
        scanf("%lf", &a);
        if(a < 0) {printf("orz\n"); return 0;}
        printf("%.5lf\n", asr(eps, 20, simpson(eps, 20)) ); 
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:50:40

      G57 自适应辛普森积分【计算几何】

      #include<bits/stdc++.h>
      using namespace std;
      const double eps=1e-10;
      double a;
      double f(double x)
      {
      	return pow(x,a/x-x);
      }
      double simpson(double l,double r)
      {
      	return (r-l)*( f(l)+f(r)+4*f( (l+r)/2 )  )/6;
      }
      double asr(double l,double r,double ans)
      {
      	double m=(l+r)/2,ls=simpson(l,m),rs=simpson(m,r);
      	if( fabs(ls+rs-ans)<eps ) return ans;
      	return asr(l,m,ls)+asr(m,r,rs);
      }
      int main()
      {
      	freopen("a.in","r",stdin);freopen("a.out","w",stdout);
      	scanf("%lf",&a);
      	if(a<0) {printf("orz\n");return 0;}
      	printf("%.5lf\n",asr(eps,20,simpson(eps,20) )   ); 
      	return 0;
      }
      • 1

      G57_3 自适应辛普森积分【计算几何】自适应辛普森法 2[P4526]

      信息

      ID
      493
      时间
      1000ms
      内存
      128MiB
      难度
      5
      标签
      递交数
      30
      已通过
      13
      上传者