hdu 1071 The area【定积分】

用顶点式\( a(x-h)^2+k=y \)解方程,转化为\(ax^2+bx+c=y \)的形式,然后对二次函数求定积分\( \frac{ax3}{3}+\frac{bx2}{2}+cx+C \)即可。(其实我不知道那个C是干什么用的反正这里不用加。

#include<iostream>
#include<cstdio>
using namespace std;
int T;
double x1,x2,x3,y1,y2,y3,a,b,c,h,k;
double f(double x)
{
    return a*x*x*x/3+c*x+x*a*h*h-a*h*x*x-(k*x*x/2+b*x);
}
int main()
{
	scanf("%d",&T);
	while(T--)
	{
		scanf("%lf%lf%lf%lf%lf%lf",&x1,&y1,&x2,&y2,&x3,&y3);
		a=(y2-y1)/(x2-x1)/(x2-x1);
		c=y1;
		h=x1;
		k=(y3-y2)/(x3-x2);
		b=y2-k*x2;
		printf("%.2lf\n",f(x3)-f(x2));
	}
	return 0;
}
posted @ 2018-02-17 21:44  lokiii  阅读(147)  评论(0编辑  收藏  举报