cogs 1656. 膜拜神犇
1656. 膜拜神犇
★☆?? 輸入文件:trioxorz.in?? 輸出文件:trioxorz.out???簡單對比
時間限制:0.5 s?? 內(nèi)存限制:128 MB
?
?
【題目描述】
????bigmingod?是F.M.S信息組的組草,同時也是萬人膜拜的神犇,整個年級暗戀他的女生不計其數(shù),這讓機(jī)房里的三只蒟蒻QYHDS,LZK,OIdiot羨慕嫉妒恨。為了獲得像bigmingod一樣的成就,這三只蒟蒻決定每次競賽課前對他進(jìn)行膜拜——三個人構(gòu)成一個三角形,將bigmingod包圍在內(nèi)部(不包括邊上),稱為膜拜成功!
????然而蒟蒻也許跟不上神犇的腳步,若沒能包圍bigmingod,則為膜拜失敗。如圖所示:
????現(xiàn)在給你N次的膜拜情況,請你編程輸出膜拜成功的次數(shù)。
【輸入格式】
????第一行為一個正整數(shù)N表示膜拜的次數(shù)。
????以下N行,每行?6?個數(shù)字,x1,y1,x2,y2,x3,y3?即三角形頂點的坐標(biāo)。
【輸出格式】
一個整數(shù),即膜拜成功的次數(shù)。
【樣例輸入】
3
-1?0?0?-1?0?1
-1?1?2?-2?1?2
-2?2?-1?-5?10?6
【樣例輸出】
1
【數(shù)據(jù)范圍】
N?≤300000。
坐標(biāo)絕對值均小于1000,且保證不會出現(xiàn)三點共線或重合的點。
【來源】
??F.M.S?in?Changsha
Solution:
這題其實非常水,因為bigmingod在(0,0)所以只有當(dāng)三個點所代表的向量的夾角都為銳角時才滿足條件。其實就是前兩個叉乘同號,最后一個叉乘和前兩個異號。當(dāng)然還有一種做法就是把每一個解析式求出來,再隨表從(0,0)引一條射線,看射線和幾個函數(shù)圖像再兩點之間相交,如果這個個數(shù)為奇數(shù)則說明點在區(qū)域內(nèi),否則不合法。但是本蒟蒻只打了60分,另外40不是精度問題就是隨機(jī)選取的射線有問題,有可能出現(xiàn)重合現(xiàn)象。用int,double會死一個點。
1 #include<cstdio> 2 #define eps 1e-10 3 using namespace std; 4 int x1,y1,x2,y2,x3,y3; 5 int n,ans; 6 int main(){ 7 freopen("trioxorz.in","r",stdin); 8 freopen("trioxorz.out","w",stdout); 9 scanf("%d",&n); 10 while(n--) { 11 scanf("%d%d%d%d%d%d",&x1,&y1,&x2,&y2,&x3,&y3); 12 int ans1=x1*y2-y1*x2; 13 int ans2=x2*y3-y2*x3; 14 int ans3=x1*y3-y1*x3; 15 if(ans1>0&&ans2>0&&ans3<0){ 16 ans++; 17 }else{ 18 if(ans1<0&&ans2<0&&ans3>0){ 19 ans++; 20 } 21 } 22 } 23 printf("%d\n",ans); 24 return 0; 25 }?
?
轉(zhuǎn)載于:https://www.cnblogs.com/forevergoodboy/p/7291564.html
總結(jié)
以上是生活随笔為你收集整理的cogs 1656. 膜拜神犇的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angularJS 上传multipar
- 下一篇: 灵用金每个月怎么还款