题意:给你三个点,分别代表抛物线的顶点以及一条直线与他的两个交点。请计算他们的闭合区域的面积。


一道简单的数学积分题,就是自己推导的时候变量比较多有点繁琐。这里我使用了直线的两点式和抛物线的两点式。(比较坑爹的一点是y1这个变量不能定义,用c++编译器会报错,所以用g++过的。还有就是用函数返回积分会耗费15ms,如果不用函数则是0ms)


题目地址:http://acm.hdu.edu.cn/showproblem.php?pid=1071


代码:

#include <iostream>
#include <cstdio>
using namespace std;
double a, b, c, ans;
double x1,x2,x3,y1,y2,y3;
int n;
double integ(double x){
    return a*(x*x*x/3.0-x1*x*x+x1*x1*x)+y1*x-b*x*x/2.0-c*x;
}
int main()
{
    cin>>n;
    while(n--){
        cin>>x1>>y1>>x2>>y2>>x3>>y3;
        a = (y2-y1)/((x2-x1)*(x2-x1));
        b = (y3-y2)/(x3-x2);
        c = (x3*y2-x2*y3)/(x3-x2);
        ans = integ(x3)-integ(x2);
        printf("%.2lf\n", ans);
    }
    return 0;
}