hdu 1071 The area

我和这题有缘吗?

知道三个点了 就可以求出直线和抛物线的方程 
然后就是非常简单的二重积分求面积 ^_^  

用抛物线的顶点公式y=a(x-x1)^2+y1外加另一个点x2算出a,然后对抛物线公式求积分,用积分的公式算出抛物线和x轴的面积,减去梯形的面积就行。

#include "stdio.h" 
int main() 

 
int n,i; 
 
double e,f,g,h,l,r,a,b,c,k,m,area; 
 scanf(
"%d",&n); 
 
for(i=0;i<n;i++
 { 
  scanf(
"%lf %lf",&e,&f);
  scanf(
"%lf %lf",&g,&h); 
  scanf(
"%lf %lf",&l,&r); 

  a
=(h-f)/((e-g)*(e-g));
  b
=-2*e*(h-f)/((e-g)*(e-g));
  c
=f-e*e*(h-f)/((e-g)*(e-g))+e*2*e*(h-f)/((e-g)*(e-g));
  k
=(h-r)/(g-l);
  m
=h-g*(h-r)/(g-l);
  area
=a*l*l*l/3+(b-k)*l*l/2+(c-m)*l-a*g*g*g/3-(b-k)*g*g/2-(c-m)*g; 
  printf(
"%.2f\n",area); 
 } 
 
return 0
}
原文地址:https://www.cnblogs.com/anderson0/p/2040312.html