链接: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来帮他解决了。
输入描述:
多组输入,输入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