题目链接: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 IDE中安装emmet插件

    1.首先打开APPCAN IDE 2.帮助(help)-安装新软件(install New sofaWare) 3.打开Install窗口,点击 Add,在Add Repository窗口中,Name ...

  2. node.js安装cnpm 提高下载速度

    由于中国网络特殊的网络环境原因,国外部分网站访问速度很慢. 安装node.js时,使用npm 安装软件速度也很慢,可以使用阿里的cnpm来解决 官方网址:http://npm.taobao.org: ...

  3. 服务器&域名那些事儿

    购买的阿里云的服务器(ECS)和域名 请移步: 服务器&域名那些事儿 服务器&域名那些事儿2 github 博客

  4. Android中加载位图的方法

    Android中加载位图的关键的代码: AssetManager assets =context.getAssets(); //用一个AssetManager 对象来从应用程序包的已编译资源中为工程加 ...

  5. ruby on rails validates uniqueness

    最近在处理一个小功能,每个元素可以有多个图片,每个图片的name表示了它是背景图还是海报图, 需要对每个元素的图片name做一个唯一性验证,一个元素不能添加两个海报图, 需要使用的是validates ...

  6. Mysql5.7版本编译安装及配置

    配置yum安装方式 1.配置本地yum源 vim /etc/yum.repos.d/rhel-source.repo [rhel-source] name=Red Hat Enterprise Lin ...

  7. 1.5---字符串压缩(CC150)

    import java.util.*; public class Zipper { public String zipString(String str) { // write code here i ...

  8. 一次Android脱壳training

    一.查壳 jeb载入发现没有代码,怀疑加壳 用查壳工具查壳 (爱加密) apktool解包 得到其 package name: loading.androidmanual main activity ...

  9. Java 日期加减计算.

    1.用Java.util.Calender来实现 Calendar calendar=Calendar.getInstance();      calendar.setTime(new Date()) ...

  10. 使用GitHub

    1. 进入 1.1 建立账号 打开网站https://github.com/主页上就可以注册.注册之后会有一个简单的帮助文档,在帮组文档上可以下载一个PC客户端(如果是WINDOWS平台,需要.NET ...