题目链接: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. APPCAN MAS接口之SOAP

    APPCAN MAS接口中使用webservice接口形式,示例代码如下:  1 var MEAP=require("meap");  2   3 function run(Par ...

  2. canvas对象arcTo函数的使用-遁地龙卷风

    (-1)环境说明 我使用的浏览器是chrome49 (1)详细介绍 $(function() { var context = lol.getContext("2d"); conte ...

  3. java网络osi基础

  4. BZOJ4411——[Usaco2016 Feb]Load balancing

    1.题意: 给出N个平面上的点.保证每一个点的坐标都是正奇数. 你要在平面上画两条线,一条是x=a,一条是y=b,且a和b都是偶数. 直线将平面划成4个部分,要求包含点数最多的那个部分点数最少. 2. ...

  5. BZOJ 1057: [ZJOI2007]棋盘制作

    Decsription 给你一个矩阵,求最大了 01相间 的矩阵. Sol DP+悬线法. 这是一个论文啊 <浅谈用极大化思想解决最大子矩形问题>--王知昆. 枚举每一根悬线,记录最左/右 ...

  6. Linux下编译安装Apache Http Server

    Linux下编译安装Apache Http Server [TOC] 1.下载httpd-2.4.12.tar.bz2 wget http://mirror.bit.edu.cn/apache/htt ...

  7. hadoop小试

    standard mode(标准模式) 下载 wget http://mirror.bit.edu.cn/apache/hadoop/common/stable/hadoop-2.7.2.tar.gz ...

  8. ndk学习16: unix domain socket

    一.UNIX Domain Socket 概念: UNIX Domain Socket是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC) 特点: 1. 它不需要经过网络协议栈,不需要 ...

  9. htpasswd命令

    htpasswd命令是Apache的Web服务器内置工具,用于创建和更新储存用户名.域和用户基本认证的密码文件. 语法 htpasswd(选项)(参数) 选项 -c:创建一个加密文件:-n:不更新加密 ...

  10. [20160725]MyComparableTest

    知识点: 1.Collections的使用. 2.自定义类泛型的使用. 3.自定义类,toString();equals();hashCode()方法的重写. import java.util.*; ...