内心里的一把火 福建工程学院第七届ACM程序设计新生赛 (同步赛)

版权声明:版权声明,使用请说明出处 https://blog.csdn.net/qq_41835683/article/details/85195277

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

题解:简单来看 可以用三个小三角形的面积之和与大三角形的面积作比较。

问题的关键式怎么求三角形的面积,知道向量的叉乘求面积好处理一些,简单来说 结论是这样的:

已知三角形三点坐标为(x1,y1) (x2,y2) (x3,y3)

则三角形面积为=(1/2)*[(x2y3-x3y2)-(x1y3-x3y1)+(x1y2-x2y1)]

详细请转:https://blog.csdn.net/vaeloverforever/article/details/82955101

代码

#include <iostream>
#include <bits/stdc++.h>
using namespace std;
double x[5],y[5];
double area(int a,int b,int c){
    return fabs((x[b]*y[c]-x[c]*y[b])-(x[a]*y[c]-x[c]*y[a])+(x[a]*y[b]-x[b]*y[a]));
}

int main(){
    while(cin>>x[1]>>y[1]>>x[2]>>y[2]>>x[3]>>y[3]>>x[0]>>y[0]){
        double one=area(0,1,2);
        double two=area(0,2,3);
        double three=area(0,1,3);
        double s=area(1,2,3);
        if(one+two+three==s)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}

题目描述

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

猜你喜欢

转载自blog.csdn.net/qq_41835683/article/details/85195277