The area HDU - 1071
阿新 • • 發佈:2018-12-10
題意:給出如圖的拋物線和直線,並且給出頂點。問買面積。要用到微積分,拋物線公式,兩點式。
#include<iostream> #include<cstring> #include<cstdio> using namespace std; struct node { double x,y; }; int main() { int t; scanf("%d",&t); node p1,p2,p3; while(t--) { scanf("%lf%lf",&p1.x,&p1.y); scanf("%lf%lf",&p2.x,&p2.y); scanf("%lf%lf",&p3.x,&p3.y); //拋物線y=a(x-p1.x)^2+p1.y;y=ax^2+bx+c; double a=(-p1.y+p2.y)/((p2.x-p1.x)*(p2.x-p1.x)); double b=-a*2*p1.x; double c=a*p1.x*p1.x+p1.y; double k=(p3.y-p2.y)/(p3.x-p2.x); double t=p3.y-k*p3.x; double ans=1.0/3.0*a*(p3.x*p3.x*p3.x-p2.x*p2.x*p2.x)+0.5*(b-k)*(p3.x*p3.x-p2.x*p2.x)+(c-t)*(p3.x-p2.x); printf("%.2f\n",ans); } return 0; }