HDU1071 The area 【积分】
2014-07-23 11:23
239 查看
The area
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 7476 Accepted Submission(s): 5222
[align=left]Problem Description[/align]
Ignatius bought a land last week, but he didn't know the area of the land because the land is enclosed by a parabola and a straight line. The picture below shows the area. Now given all the intersectant points shows in the picture,
can you tell Ignatius the area of the land?
Note: The point P1 in the picture is the vertex of the parabola.
![](http://acm.hdu.edu.cn/data/images/1071_1.bmp)
[align=left]Input[/align]
The input contains several test cases. The first line of the input is a single integer T which is the number of test cases. T test cases follow.
Each test case contains three intersectant points which shows in the picture, they are given in the order of P1, P2, P3. Each point is described by two floating-point numbers X and Y(0.0<=X,Y<=1000.0).
[align=left]Output[/align]
For each test case, you should output the area of the land, the result should be rounded to 2 decimal places.
[align=left]Sample Input[/align]
2
5.000000 5.000000
0.000000 0.000000
10.000000 0.000000
10.000000 10.000000
1.000000 1.000000
14.000000 8.222222
[align=left]Sample Output[/align]
33.33
40.69
Hint
For float may be not accurate enough, please use double instead of float.
题意:给定一个抛物线的顶点P1坐标和另外两点坐标P2、P3,以及一条穿过P2、P3的直线。求直线与抛物线围城的面积。
题解:每次做磊哥出的题总会学到些新东西,这次也不例外。这是我第一次做积分的题。高数总算是没白学。但是已知抛物线三点坐标求抛物线的方程我愣是没解出来,感觉太复杂了,在网上找的别人推出好的公式:click
here
#include <stdio.h>int main()
{
int t;
double x1, y1, x2, y2, x3, y3, a, b, c, k, d, p, q, r, ans;
scanf("%d", &t);
while(t--){
scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
p = y1 / ((x1 - x2) * (x1 - x3));
q = y2 / ((x2 - x1) * (x2 - x3));
r = y3 / ((x3 - x1) * (x3 - x2));
a = p + q + r;
b = -p*(x2 + x3) - q*(x1 + x3) - r * (x1 + x2);
c = p * x2 * x3 + q * x1 * x3 + r * x1 * x2;
k = (y3 - y2) / (x3 - x2);
d = y2 - k * x2;
ans = (1.0/3*a*x3*x3*x3 + 1.0/2*(b-k)*x3*x3 + (c-d)*x3) -
(1.0/3*a*x2*x2*x2 + 1.0/2*(b-k)*x2*x2 + (c-d)*x2);
if(ans < 0) ans = -ans;
printf("%.2lf\n", ans);
}
return 0;
}
相关文章推荐
- HDU1071 The area 【积分】
- The area (hdu1071)积分求面积
- The area (hdu1071)积分求面积
- HDU 1071 The area ----求定积分
- Hdu1071 The area
- Hdu 1071 The area (抛物线 简单定积分)
- SPOJ CIRU The area of the union of circles ——Simpson积分
- hdu 1071 The area(定积分求面积)
- HDU 1071 The area && 抛物线与直线积分面积
- [省选前题目整理][SPOJ CIRU]The area of the union of circles(自适应Simpson积分求圆并面积)
- HDU-1071 The area(积分)
- [SPOJ CIRU]The area of the union of circles(自适应Simpson积分求圆并面积)
- hdoj1071 The area(数学题,积分)
- 1071 The area 求面积(积分)
- hdu 1071 The area 高斯消元求二次函数+辛普森积分
- HDU 1071 The area(数学 抛物线 积分)
- ACM-计算几何之The area——hdu1071
- 159 Which three types of files can be automatically placed in the flash recovery area (fast recovery
- 二重积分的计算 —— 交换积分顺序(exchange the order of integration)
- Tuning the System Global Area