內心裡的一把火 福建工程學院第七屆ACM程式設計新生賽 (同步賽)
阿新 • • 發佈:2018-12-30
連結: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