HDU4082(相似三角形的个数)
生活随笔
收集整理的這篇文章主要介紹了
HDU4082(相似三角形的个数)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目:Hou Yi's secret
?
#include<stdio.h> #include<math.h> #include<map> #include<iostream> #include<string.h> using namespace std; const double eps=1e-6; map<long long,int>mp; struct Node {int x,y; }node[50];double dis(Node a,Node b) {return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)); }void solve(Node a,Node b,Node c) {double la=dis(b,c);double lb=dis(a,c);double lc=dis(a,b);if(la+lb<=lc+eps)return;if(lb+lc<=la+eps)return;if(la+lc<=lb+eps)return;double A=acos((lb*lb+lc*lc-la*la)/(2*lb*lc));double B=acos((la*la+lc*lc-lb*lb)/(2*la*lc));double C=acos((la*la+lb*lb-lc*lc)/(2*la*lb));if(A<eps||B<eps||C<eps)return;int t1=(int)(A*10000);int t2=(int)(B*10000);int t3=(int)(C*10000);if(t1>t2)swap(t1,t2);if(t1>t3)swap(t1,t3);if(t2>t3)swap(t2,t3);if(t1==0)return;long long t=t1*1000000*1000000+t2*1000000+t3;mp[t]++; }int hole[220][220];int main () {int n;while(scanf("%d",&n),n){int t=0;memset(hole,0,sizeof(hole));for(int i=0;i<n;i++){scanf("%d%d",&node[t].x,&node[t].y);if(hole[node[t].x+100][node[t].y+100]==0){hole[node[t].x+100][node[t].y+100]=1;t++;}}n=t;mp.clear();for(int i=0;i<n;i++)for(int j=i+1;j<n;j++)for(int k=j+1;k<n;k++)solve(node[i],node[j],node[k]);int ans=0;map<long long,int>::iterator it;for(it=mp.begin();it!=mp.end();it++){int t=it->second;if(t>ans)ans=t;}printf("%d\n",ans);}return 0; }
?
總結
以上是生活随笔為你收集整理的HDU4082(相似三角形的个数)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HDU3400(计算几何中的三分法利用)
- 下一篇: POJ4449(三维凸包+空间坐标旋转+