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

福建工程学院第七届ACM程序设计新生赛 (同步赛)-D.内心里的一把火_第1张图片

地址:https://ac.nowcoder.com/acm/contest/289/D

思路:点p在三角形内,就要有点P和C在直线AB同侧,直线P和A在直线BC同侧,直线P和B在直线AC同侧。
当同时满足时,P在三角形ABC内。
判断是否同侧
直线方程为 (y-y1)(x1-x2)-(y1-y2)(x-x1)=0 
当 (y-y1)(x1-x2)-(y1-y2)(x-x1)>0 时,点(x,y)在直线的右侧
当 (y-y1)(x1-x2)-(y1-y2)(x-x1)<0 时,点(x,y)在直线的左侧

Code:

#include
using namespace std;
/*
点p在三角形内,就要有点P和C在直线AB同侧,直线P和A在直线BC同侧,直线P和B在直线AC同侧。
当同时满足时,P在三角形ABC内。
判断是否同侧
直线方程为 (y-y1)(x1-x2)-(y1-y2)(x-x1)=0 
当 (y-y1)(x1-x2)-(y1-y2)(x-x1)>0 时,点(x,y)在直线的右侧
当 (y-y1)(x1-x2)-(y1-y2)(x-x1)<0 时,点(x,y)在直线的左侧
*/ 
bool IsInTri(int x1,int y1,int x2,int y2,int x3,int y3,int x,int y);
int main()
{
    int x1,y1,x2,y2,x3,y3,x,y;
    while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x>>y){
    	if(IsInTri(x1,y1,x2,y2,x3,y3,x,y))	cout<<"YES"<

 

你可能感兴趣的:(数论,牛客)