HDU 1071 The area && 抛物线与直线积分面积

该博客介绍了一个通过确定抛物线和直线的参数,并使用积分计算两者围成区域面积的问题。作者在包子学姐的帮助下,解决了这个问题。
摘要由CSDN通过智能技术生成

这个题,是我请教包子学姐,让她帮我导出公式,然后做的。。。

题意:给你三个点p1、p2、p3,这三个点可以确定一个抛物线,p1是顶点,p2和p3确定一条直线。问你抛物线与直线围成的面积。

解法:中学+大学的数学。先求出抛物线的三个参数 a、b、c,再求出直线的参数 k t 之后手写积分,最后输出结果。求参数的方法是包子写的,有学姐真好。。。

#include <iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<map>
#include<queue>
#include<cmath>
#include<vector>
#define inf 0x3f3f3f3f
#define Inf 0x3FFFFFFFFFFFFFFFLL
#define pi acos(-1.0)
#define eps 1e-8
using namespace std;

struct Point
{
    double x, y;
    Point(double x=0, double y=0):x(x),y(y) {}
    bool read() {scanf("%lf%lf",&x,&y);return true;}
};

//主函数
int main()
{
    //freopen("in.txt","r",stdin);
    double a, b, c;
    int t; scanf("%d", &t);
    while(t--)
    {
        Point p1, p2, p3;
        p1.read(); p2.read(); p3.read();
        double a = (p2.y-p1.y)/(p2.x-p1.x)/(p2.x-p1.x);
        double b = -2*a*p1.x;
        double c = p1.y+a*p1.x*p1.x;
        double k = (p3.y-p2.y)/(p3.x-p2.x);
        double t = p2.y - k * p2.x;
        double area = a/3*(p3.x*p3.x*p3.x-p2.x*p2.x*p2.x) + (b-k)/2*(p3.x*p3.x-p2.x*p2.x)+(c-t)*(p3.x-p2.x);
        printf("%.2lf\n",area);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值