计算三角形面积_三角形怎么算平方

计算三角形面积_三角形怎么算平方参考:已知三点坐标,求三角形面积1:已知直角坐标系3点p(a,b),m(c,d),n(e,f)求三角形pmn面积两倍三角形面积是整型代码模板:llsolve(lla,llb,llc,

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

参考:已知三点坐标,求三角形面积

计算三角形面积_三角形怎么算平方

1: 已知直角坐标系3点p(a,b),m(c,d),n(e,f)求三角形pmn面积

两倍三角形面积是整型
代码模板:

ll solve(ll a,ll b,ll c,ll d,ll e,ll f)//计算两倍三角形面积
{
    return abs(a*d+b*e+c*f-a*f-b*c-d*e);
}

此写法可以不爆long long,之后再除以2即可

2: 若是由三条边求面积,则海伦公式

计算三角形面积_三角形怎么算平方

模板为:

double hailun(double a,double b,double c)
{//保证尽量不爆long long
    double s;
    double pp=(a+b+c)/2.0;
    double s1=sqrt(fabs(pp));
    double s2=sqrt(fabs(pp-a));
    double s3=sqrt(fabs(pp-b));
    double s4=sqrt(fabs(pp-c));
    s=s1*s2*s3*s4;
    return s;
}

3: 判断三点一线

bool judge(node a,node b,node c)
{
    return (c.x-a.x)*(b.y-a.y)-(c.y-a.y)*(b.x-a.x)!=0;
}

参考例题:https://ac.nowcoder.com/acm/contest/327/A

处女座的签到题
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 262144K,其他语言524288K
64bit IO Format: %lld

题目描述

平面上有n个点,问:平面上所有三角形面积第k大的三角形的面积是多少?

输入描述

第一行T,表示样例的个数。
对于每一组样例,第一行两个整数n和k,
接下来n行,每行两个整数x,y表示点的坐标
T<=80
3<=n<=100
-109<=x,y<=109
对于每一组样例,保证任意两点不重合,且能构成的三角形的个数不小于k

输出描述

对于每一组样例,输出第k大三角形的面积,精确到小数点后两位(四舍五入)。

示例

输入

1
4 3
1 1
0 0
0 1
0 -1

输出

0.50

说明

样例中一共能构成3个三角形,面积分别为0.5,0.5,和1,面积第3大的为0.5
WA点:1,此题用海伦公式会爆double 和 long long
    2,寻找第K大,若不用STL(nth_element),直接sort大法,会超时….

AC代码
#include <bits/stdc++.h>

using namespace std;
#define sc(a) scanf("%d",&a)
#define sc2(a,b) scanf("%d%d",&a,&b)
#define sc3(a,b,c) scanf("%d%d%d",&a,&b,&c)
#define scl(a) scanf("%lld",&a)
#define scl2(a,b) scanf("%lld%lld",&a,&b)
#define scl3(a,b,c) scanf("%lld%lld%lld",&a,&b,&c)
#define l_b lower_bound
#define u_b upper_bound

#define min_2(a,b) a<b?a:b
#define min_3(a,b,c) min_2(min_2(a,b),c)
#define max_2(a,b) a>b?a:b
#define max_3(a,b,c) max_2(max_2(a,b),c)
#define ll long long
#define rint register int
#define mem0(x) memset(x, 0, sizeof(x))
#define mem1(x) memset(x, -1, sizeof(x))
#define lowbit(x)  x&-x
/**inline int read()///神奇的读优
{
    int x=0,f=1;char c=getchar();
    while(c<'0'||c>'9'){if(c=='-')f=-1;c=getchar();}
    while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}
    return x*f;
}*/
///2147483647 -2147483648
///9223372036854775807 -9223372036854775808
//freopen("input.txt", "r", stdin);
const double PI=acos(-1.0);
const int inf = 0x3f3f3f3f;
const ll inff = 0x3f3f3f3f3f3f3f3f;
const int mod = 1e9+7;
const int maxn= 1e8+5;

//map<ll,ll>mp;
//set<ll>st;
//stack<>st;
//queue<>Q;
/***********************************************/
vector<ll>V;
ll x[200+3],y[200+3];


ll solve(ll a,ll b,ll c,ll d,ll e,ll f)
{
    return abs(a*d+b*e+c*f-a*f-b*c-d*e);
}

int main()
{
    int T;
    cin>>T;
    while(T--)
    {
        V.clear();
        int n,k;
        sc2(n,k);

        for(int i=1;i<=n;i++){
            scanf("%lld%lld",&x[i],&y[i]);
        }

        for(int i=1;i<=n-2;i++)
        {
            for(int j=i+1;j<=n-1;j++){
                for(int p=j+1;p<=n;p++){
                    ll ans=solve(x[i],y[i],x[j],y[j],x[p],y[p]);
                    if(ans) V.push_back(ans);
                }
            }
        }
        int nn=V.size();
        nth_element(V.begin(),V.begin()+nn-k,V.end());
        if(V[nn-k]%2)
        printf("%lld.50\n",V[nn-k]/2);
        else
        printf("%lld.00\n",V[nn-k]/2);
    }
    return 0;
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/167088.html原文链接:https://javaforall.net

(0)
上一篇 2022年8月5日 下午7:46
下一篇 2022年8月5日 下午7:46


相关推荐

  • MDI窗体的概念、作用

    MDI窗体的概念、作用接触 MDI 窗体已经很久了 用了也非常多 如今在一些用户体验好的软件上 也多采用 MDI 窗体技术 如我们现在常用的遨游浏览器 还有 Word Excel 等 但是什么是 MDI 窗体呢 在网上搜了下 发现居然没有人给一定明确的解释 慨叹国内软件从业者不求甚解阿 所谓 MDI 是 MultipleDocu 的缩写 在 VC 开发时 如果使用 MFC 则创建工程时 一般会引导用户去

    2026年3月17日
    2
  • 函数极限的定义

    函数极限的定义严格定义设函数y=f(x)y=f(x)y=f(x)在点x0x_0x0​的某个去心邻域内有定义,即存在ρ>0\rho>0ρ>0,使O(x0,ρ)\{x0}⊂Df\mathbf{O}(x_0,\rho)\backslash\{x_0\}\subsetD_fO(x0​,ρ)\{x0​}⊂Df​如果存在实数AAA,对于任意给定的ε>0\varepsilon>0ε>0,可以找到δ>0\delta>0δ>0,使得当0<∣x−x0∣

    2022年5月4日
    47
  • Mybatis 查询结果类型为char时候:Cause: java.lang.StringIndexOutOfBoundsException: String index out of range: 0…「建议收藏」

    Mybatis 查询结果类型为char时候:Cause: java.lang.StringIndexOutOfBoundsException: String index out of range: 0…「建议收藏」Mybatis 查询结果类型为char时候:Cause: java.lang.StringIndexOutOfBoundsException: String index out of range: 0…

    2022年4月21日
    53
  • MTK 电池曲线配置【转】

    MTK 电池曲线配置【转】本文转载自 http blog csdn net u0 article details 硬件平台 MT8382 网上有很多关于电池曲线配置的文档 定位到具体的文件和数据结构 但是具体的数据配置却是没有 由于工作期间需要配置到对应的电池曲线 特意把修改过程使用到的数据记录下来 电池曲线需要修改 mediatek custom pro kernel bat

    2026年3月16日
    2
  • Singular Value Thresholding (SVT) 奇异值阈值

    Singular Value Thresholding (SVT) 奇异值阈值这个算法受到压缩感知中迭代算法的启发,在迭代过程中对矩阵进行SVD,然后将较小的奇异值设置为0,生成新的矩阵进行迭代。该算法运算速度快,对于高位低秩矩阵的恢复非常有效。

    2022年6月2日
    56
  • ffmpeg源码编译_开源代码平台

    ffmpeg源码编译_开源代码平台 注:本文来转自http://www.aurora-x.net/wiki/CompileFFmpegWindows,前段时间用ffempg和x264开发了h264编码和解码的Filter,这篇文章是我编译ffmeg工程从网上搜到的最好的一份文档,及其详尽,我就是按照这个文档的一步一步地来做,第一次就顺利地完成了ffmepg的编译。如果你也在学习ffmpeg,来仔细学习一下这份文档吧,以后

    2026年3月9日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号