zoukankan      html  css  js  c++  java
  • 内心里的一把火(计算几何(海伦公式))

    链接:https://ac.nowcoder.com/acm/contest/289/D
    来源:牛客网
     

    时间限制:C/C++ 1秒,其他语言2秒
    空间限制:C/C++ 131072K,其他语言262144K
    64bit IO Format: %lld

    题目描述

    小明在上学的路上,看到了小花,小花也看见了他,两个人深情的对视了一下,然后小花就对小明说:你爱过我吗?小明说:爱过。小花就对小明说,那你能帮我做一个题目吗?如果你能做对的话,就证明你爱过我。小明自信的回答好啊。小花说,给你三个人的坐标,以及小花的坐标,她想知道她是不是处在他们三个人的范围之内。小明顿时慌了,早知道我就不说了,他赶紧找到了acmer来帮他解决了。

    image.png

    输入描述:

    多组输入,输入A,B,C的坐标(x1,y1,x2,y2,x3,y3),以及小花的坐标(x,y)。(范围都是在0到100之内的整数)

    输出描述:

    是的话就输出YES,否则输出NO

    示例1

    输入

    复制

    0 0 3 0 0 4
    1 1

    输出

    复制

    YES
    

    如果在三角形的内部,三个的面积一定等于大的,在外面的话一定大于大的面积,因为精度的原因,YES的范围是小于等于大的面积

    代码:

    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<iostream>
    #include<cmath>
    
    using namespace std;
    
    int main()
    {
    	int x1,y1,x2,y2,x3,y3;
    	int x,y;
    	while(scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3)!=EOF)
    	{
    		cin>>x>>y;
    		double a=sqrt(pow(x1-x2,2)+pow(y1-y2,2)); 
    	    double b=sqrt(pow(x3-x2,2)+pow(y3-y2,2));
    	    double c=sqrt(pow(x1-x3,2)+pow(y1-y3,2));
    	    double p=(a+b+c)/2;
    	    double a1=sqrt(pow(x1-x,2)+pow(y1-y,2));
    	    double b1=sqrt(pow(x2-x,2)+pow(y2-y,2));
    	    double c1=sqrt(pow(x3-x,2)+pow(y3-y,2));
    //	    cout<<a1<<" "<<b1<<" "<<c1<<endl;
    	    
    	    double p1=(a+a1+b1)/2;
    	    double p2=(b+b1+c1)/2;
    	    double p3=(c+a1+c1)/2;
    	    double SABC=sqrt(p*(p-a)*(p-b)*(p-c));
    	    double SABP=sqrt(p1*(p1-a)*(p1-a1)*(p1-b1));
    	    double SBPC=sqrt(p2*(p2-b)*(p2-b1)*(p2-c1));
    	    double SAPC=sqrt(p3*(p3-c)*(p3-a1)*(p3-c1));
    	   
    	    long long int S1=SABC*1000000;
    	    long long int S2=SABP*1000000;
    	    long long int S3=SBPC*1000000;
    	    long long int S4=SAPC*1000000;
    	    //cout<<S1<<" "<<S2<<" "<<S3<<" "<<S4<<endl;
    	    if(S1>=S2+S3+S4)
    	    {
    	    	cout<<"YES"<<endl;
    		}
    		else
    		{
    			cout<<"NO"<<endl;
    		}
        }
    	return 0;
    }
  • 相关阅读:
    poj 1265 Area(Pick定理)
    poj 2954 Triangle(Pick定理)
    poj 1654 Area(多边形面积)
    bzoj 1069 [SCOI2007]最大土地面积(旋转卡壳)
    227 用栈模拟汉诺塔问题
    213 字符串压缩
    212 空格替换
    211 字符串置换
    209 First Unique Character in a String
    197 排列序号
  • 原文地址:https://www.cnblogs.com/Staceyacm/p/10781867.html
Copyright © 2011-2022 走看看