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

题意:给出抛物线的顶点和它与一直线的两交点,求他们围成的面积;

思路:

可以直接求出他们的方程式,再积分,这个方法就不说了;

偶然看见另一个解法,觉得蛮有意思的,就记一下好了。。

抛物线与直线为成的面积等于直线的平行线与抛物线的切点和该直线与抛物线两交点组成的三角形面积 s*4/3;(抛物线弓形面积公式等于:以割线为底,以平行于底的切线的切点为顶点的内接三角形的4/3,即:抛物线弓形面积=S+1/4*S+1/16*S+1/64*S+……=4/3*S; 本渣渣百度的,抛物线弓形面积阿基米德算法,自己不会证明);

设 y=a*x*x+b*x+c;代入已知的三个点坐标,用行列式解三元三次方程组解出a, b, c;

直线的斜率可以通过p2, p3两点求出, k=(y3-y2)/(x3-x2);

对y=a*x*x+b*x+c求导得:y*=2*a*x+b=k;

可以解出x,反代入抛物线方程式中求出y;

现在我们已经求出了切点p(x, y),接下来还需要求一下三角形面积pp2p3面积s;

已知三点求三角形面积我们可以通过构造梯形再减去两个直角三角形面积得到;

推导初的面积公式为:s=(x*y2+y*x3+x2*y3-x*y3-y*x2-y2*x3)/2;

代码:

 #include <iostream>
#include <stdio.h>
#include <math.h>
#define PI 3.1415926
#define INF 10000
using namespace std; double matrix(int n, double a[][]){ //***3*3行列式计算
double sum1=a[][]*a[][]*a[][]+a[][]*a[][]*a[][]+a[][]*a[][]*a[][];
double sum2=a[][]*a[][]*a[][]+a[][]*a[][]*a[][]+a[][]*a[][]*a[][];
return sum1-sum2;
} int main(void){
int t;
scanf("%d", &t);
while(t--){
double x1, y1, x2, y2, x3, y3;
scanf("%lf%lf%lf%lf%lf%lf", &x1, &y1, &x2, &y2, &x3, &y3);
double matrix1[][]={y1, x1, , y2, x2, , y3, x3, };
double matrix2[][]={x1*x1, y1, , x2*x2, y2, , x3*x3, y3, };
double matrix3[][]={x1*x1, x1, y1, x2*x2, x2, y2, x3*x3, x3, y3};
double matrix4[][]={x1*x1, x1, , x2*x2, x2, , x3*x3, x3, };
double a=matrix(, matrix1);
double b=matrix(, matrix2);
double c=matrix(, matrix3);
double d=matrix(, matrix4);
a/=d;
b/=d;
c/=d;
double k=(y3-y2)/(x3-x2);
double x=(k-b)/(*a);
double y=a*x*x+b*x+c;
double cnt=(x*y2+y*x3+x2*y3-x*y3-y*x2-y2*x3)/;
printf("%.2lf\n", cnt*/);
}
return ;
}

hdu1071(抛物线弓形面积阿基米德算法)的更多相关文章

  1. 阿基米德项目ALS矩阵分解算法应用案例

    转自:https://github.com/ceys/jdml/wiki/ALS 阿基米德项目ALS矩阵分解算法应用案例 编写人:ceys/youyis 最后更新时间:2014.5.12 一.算法描述 ...

  2. MT【237】阿基米德三角形的一些常见性质

    阿基米德三角形的常见性质:抛物线:$x^2=2py,AB$为抛物线的弦,$AQ,BQ$为切线,记$Q(x_0,y_0)$则$1)k_{QA}*k_{QB}=\dfrac{p}{2x_0}$$2)k_{ ...

  3. HFSS——平面正弦加载阿基米德螺旋线模型设计

    这学期开始进入HFSS的学习,这是软件应该是电磁相关专业必须掌握的软件之一.前几天图老师发布第一个模型设计任务,是关于平面正弦加载阿基米德螺旋线,拿到具体要求后,就去网上找资料,发现有关HFSS的资料 ...

  4. JavaScript图形实例:阿基米德螺线

    1.阿基米德螺线 阿基米德螺线亦称“等速螺线”.当一点P沿动射线OP以等速率运动的同时,该射线又以等角速度绕点O旋转,点P的轨迹称为“阿基米德螺线”. 阿基米德螺线的笛卡尔坐标方程式为: r=10*( ...

  5. HDU 1071 The area(求三个点确定的抛物线的面积,其中一个点是顶点)

    传送门: http://acm.hdu.edu.cn/showproblem.php?pid=1071 The area Time Limit: 2000/1000 MS (Java/Others)  ...

  6. hdu1071(定积分求面积)

    太弱了,写了一下午,高中基础太差的孩子伤不起... 记住抛物线是关于x轴对称的. 而且抛物线的方程可以是: y=k(x-h)+c  //其中(h,c)为顶点坐标 The area Time Limit ...

  7. 探索性思维——How to Solve It

    我觉得这篇文章和什么都能扯上点关系,比如编程. 很多人已经讨论过数学与编程的关系了,这里不想过多探讨,只是简单提一下:有些人把数学贬低地一文不值,认为做一般的应用软件用不到数学:而有些人则把数学拔高到 ...

  8. [No0000158]思维模型1-20

    [No0000158]思维模型1-20.7z 思维模型No1|第一性原理 第一原理(又叫第一性原理)是个今年很火的概念,最早由亚里士多德提出,它相当于数学中的公理,即在每一个系统的探索中,存在第一原理 ...

  9. 人教版高中数学(A版)

    必修1 (已看) 第一章 集合与函数概念 1.1 集合 1.2 函数及其表示 1.3 函数的基本性质 第二章 基本初等函数(1) 2.1 指数函数 2.2 对数函数 2.3 幂函数 第三章 函数的应用 ...

随机推荐

  1. CSS使用自定义光标样式-遁地龙卷风

    测试环境是chrome浏览器 Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357. ...

  2. 用phpcms开发模块时中文乱码问题

    学着用phpcms开发一个文件管理模块,出现中文乱码,折腾了半天,总结如下 1.自己在mysql客户端建表,默认表格的编码为latin1_swedish_ci,虽然可以建好后用alter命令修改编码, ...

  3. android GestureDetector 手势基础

    1. 当用户触摸屏幕的时候,会产生许多手势,例如down,up,scroll,filing等等,我们知道View类有个View.OnTouchListener内部接口,通过重写他的onTouch(Vi ...

  4. ubuntu缺少libgtk-x11-2.0.so.0的解决办法

    安装了wineqq之后运行发现提示少了libgtk-x11-2.0.so.0这个库,找了很多教程都不能解决,最后终于找到一个有用的,打开终端输入以下命令即可: sudo apt-get install ...

  5. Android学习笔记(二十)——自定义内容提供器

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 如果我们想要实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 Conten ...

  6. Cocos2d-x 3.2 项目源代码从Mac打包到安卓教程【转自:http://www.2cto.com/kf/201410/342649.html】

    当我们用Xcode写好一个项目的源码之后,如何将它导入到安卓手机中呢?下面我来给大家一步一步讲解: 首先,我们打开终端,cd到Cocos2d-x 3.2文件夹中(注意不是你写的项目文件夹,而是官方项目 ...

  7. Ubuntu固定ip和dns配置和查看

    1.查看dns: cat /etc/resolv.conf 2.Ubuntu固定ip sudo vim /etc/network/interfaces 修改如下部分: auto p3p1 iface ...

  8. 微博转发关系采集,可拓展关键字采集,评论采集(Java版)

    微博模拟登录获取cookis,配置采集深度,采集一条微博转发关系页面,同时解析页面,生成一条微博的传播图,数据集可做微博影响力分析和传播分析 gitthub:https://github.com/ch ...

  9. 5.1---二进制数插入(CC150)

    public class Solution { public static int binInsert(int n, int m, int i, int j) { // write code here ...

  10. block,inline和inline-block对比

    总体概念 block和inline这两个概念是简略的说法,完整确切的说应该是 block-level elements (块级元素) 和 inline elements (内联元素).block元素通 ...