1. 程式人生 > >內心裡的一把火 福建工程學院第七屆ACM程式設計新生賽 (同步賽)

內心裡的一把火 福建工程學院第七屆ACM程式設計新生賽 (同步賽)

連結: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