The area HDU - 1071
题意:给出如图的抛物线和直线,并且给出顶点。问买面积。要用到微积分,抛物线公式,两点式。
#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;
}