首页 > 其他 > 详细

欧拉计划难度15—25%的好题题解

时间:2021-09-02 00:36:21      阅读:9      评论:0      收藏:0      [点我收藏+]

题意:

给定 \(1000\) 个三角形的顶点坐标,问原点在多少个三角形内;

思路:

连结三角形顶点和原点,原点如果在三角形内会把三角形分成面积之和等于原三角形的三个三角形,叉积求一下原点和两两顶点构成三角形的面积与原三角形的面积,如果相等原点就在三角形内;

代码:

#include<bits/stdc++.h>
using namespace std;
struct node
{
    double x,y;
}a[10005],b[10005],c[10005];
double area(node a,node b,node c)
{
    return fabs((a.x-c.x)*(b.y-a.y)-(a.x-b.x)*(c.y-a.y))/2;
}
int main()
{
    const int n=1000;
    node O=(node){0,0};
    for(int i=1;i<=1000;i++)
    {
        cin>>a[i].x>>a[i].y>>b[i].x>>b[i].y>>c[i].x>>c[i].y;
    }
    int ans=0;
    for(int i=1;i<=1000;i++)
    {
        if(fabs(area(a[i],b[i],c[i])-area(a[i],b[i],O)-area(a[i],c[i],O)-area(b[i],c[i],O))<=1e-3)
        {
            ans++;
        }
    }
    cout<<ans;
    system("pause");
}

欧拉计划难度15—25%的好题题解

原文:https://www.cnblogs.com/blogbyWHY/p/15211884.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!