HDU 4082 Hou Yi's secret(相似三角形最大数量)
来源:互联网 发布:智能电视软件 编辑:程序博客网 时间:2024/06/03 19:25
题目
题意:
后羿射了一些箭形成一些坑,这些坑可以组成三角形,求相似三角形最大的数量。
什么是相似三角形最大数量?
相似三角形可能形成很多个,我们把不同样子的三角形定义为不同类的三角形,那么在同一类的三角形中,数量最大的就是答案。
注意:数据中的点可能用重复,要去重。
#include <bits/stdc++.h>using namespace std;double eps=1e-6;bool is[205][205];struct Triangle{ double a,b,c; bool v;}t[1000];struct Point{ double x; double y;}a[20];double dis(Point a,Point b){ return sqrt((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y));}bool line(Point a,Point b,Point c){ if(fabs((b.x-a.x)*(c.y-a.y)-(c.x-a.x)*(b.y-a.y))<eps)return true; else return false;}void add(Point a,Point b,Point c,int J)///按照顺序添加三角形的三边{ //cout<<J<<" "<<a.x<<" "<<a.y<<" "<<b.x<<" "<<b.y<<" "<<c.x<<" "<<c.y<<" "; double d1=dis(a,b); double d2=dis(a,c); double d3=dis(b,c); double sum=d1+d2+d3; t[J].a=min(d1,min(d2,d3)); t[J].c=max(d1,max(d2,d3)); t[J].b=sum-t[J].a-t[J].c; //cout<<t[J].a<<" "<<t[J].b<<" "<<t[J].c<<endl; t[J].v=false;}bool judge(Triangle x,Triangle y)///判断两个三角形是否相似,用乘法{ if((fabs(y.a*x.b-x.a*y.b)<eps)&&(fabs(y.b*x.c-x.b*y.c)<eps)&&(fabs(y.a*x.c-x.a*y.c)<eps)) return true; else return false;}int main(){ ios::sync_with_stdio(false);///加个速 int n; int x,y; while(cin>>n&&n) { memset(is,false,sizeof(is)); int Y=0; for(int i=0;i<n;i++) { cin>>x>>y; x+=100;y+=100; if(!is[x][y]){is[x][y]=true;a[Y].x=x,a[Y].y=y;Y++;}///记忆化,防止数据是重复的点 } int J=0; for(int i=0;i<Y;i++) for(int j=i+1;j<Y;j++) for(int k=j+1;k<Y;k++) { if(!line(a[i],a[j],a[k]))///三点不共线构成三角形 { add(a[i],a[j],a[k],J); J++; } } int ans=0; for(int i=0;i<J;i++) { if(t[i].v)continue; int temp=1; t[i].v=true; for(int j=i+1;j<J;j++) { if(t[j].v)continue; if(judge(t[i],t[j])){/*cout<<"i="<<i<<" j="<<j<<endl;*/temp++;t[j].v=true;}///相似的一类三角形全标记 } ans=max(ans,temp);//cout<<endl; } cout<<ans<<endl; } return 0;}
阅读全文
0 0
- HDU 4082 Hou Yi's secret(相似三角形最大数量)
- HDU 4082 Hou Yi's secret-求相似三角形的最大个数-(坑货)
- hdu 4082 Hou Yi's secret 统计相似三角形 暴力
- hdu4082 Hou Yi's secret(相似三角形)
- HDU 4082 Hou Yi's secret 伪相似三角形 && 2011 Asia Beijing Regional Contest
- hdu4082 Hou Yi's secret--相似三角形个数
- HDU 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- hdu 4082 Hou Yi's secret
- HDU - 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret
- HDU 4082 Hou Yi's secret(暴力)
- HDU 4082Hou Yi's secret2011北京现场赛B题(统计相似三角形个数)
- HDU 4082 Hou Yi's secret 暴力枚举
- HDU 4082 Hou Yi's secret --枚举
- hdu4082 Hou Yi's secret
- 第六章第七章学习
- 一致性hash算法C++版
- Java 中的接口使用初步
- leetcode 335. Self Crossing
- rxjava2源码笔记(二)
- HDU 4082 Hou Yi's secret(相似三角形最大数量)
- 欢迎您在新浪博客安家
- VS连接Sql Server数据库找不到服务…
- C#类型转换时的溢出检查
- C#与C++中switch语句区别
- C#锯齿数组
- C#中的参数数组
- c#禁止双击最大化,无边框窗体移动
- word标题前自动分页