[HDU 4082] Hou Yi's secret (简单计算几何)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4082
题目大意:
给你n个点,问能最多构成多少个相似三角形。
用余弦定理,计算三个角度,然后暴力数有多少个,更新答案。
代码:
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <cstring>
#include <vector>
#include <set>
using namespace std;
typedef pair<int,int> PII;
typedef long long LL; #define EPS 1e-8
#define PB push_back struct POINT{
int x,y;
double dis(const POINT& b){
return sqrt( double(x-b.x)*double(x-b.x)+double(y-b.y)*double(y-b.y) );
}
POINT(int ax=,int ay=):x(ax),y(ay){}
bool operator==(const POINT &b) const{
return x==b.x&&y==b.y;
}
bool operator<(const POINT &b) const{
if( x==b.x ) return y<b.y;
return x<b.x;
}
}; struct triangle{
double cosa[];
triangle(){} triangle(POINT a,POINT b,POINT c){
double A = a.dis(b);
double B = a.dis(c);
double C = b.dis(c); cosa[] = (A*A+B*B-C*C)/(*A*B);
cosa[] = (B*B+C*C-A*A)/(*B*C);
cosa[] = (A*A+C*C-B*B)/(*A*C);
sort(cosa,cosa+);
} triangle(double a,double b,double c){
cosa[] = a;
cosa[] = b;
cosa[] = c;
sort(cosa,cosa+);
} bool operator==(const triangle& b) const{
return fabs(cosa[]-b.cosa[])<EPS&&fabs(cosa[]-b.cosa[])<EPS&&fabs(cosa[]-b.cosa[])<EPS;
} }; bool isLine(POINT a,POINT b,POINT c){
return (c.x-a.x)*(b.y-a.y) == (b.x-a.x)*(c.y-a.y);
} POINT pt[];
int n; int main(){
while( scanf("%d",&n)!=EOF && n ){
set<POINT> st;
int ptrb = ;
for(int i=;i<n;i++){
int x,y;
scanf("%d%d",&x,&y);
if( st.find(POINT(x,y))==st.end() ){
pt[ptrb++] = POINT(x,y);
st.insert(POINT(x,y));
}
} vector<triangle> vec;
for(int i=;i<ptrb;i++){
for(int j=i+;j<ptrb;j++){
for(int k=j+;k<ptrb;k++){
if( !isLine(pt[i],pt[j],pt[k])){
vec.PB(triangle(pt[i],pt[j],pt[k]));
}
}
}
} int maxn = ; for(size_t i=;i<vec.size();i++){
int as = ; for(size_t j=i+;j<vec.size();j++){
if( vec[i]==vec[j] ) as++;
}
maxn = max(as,maxn);
}
printf("%d\n",maxn);
}
return ;
}
[HDU 4082] Hou Yi's secret (简单计算几何)的更多相关文章
- hdu 4082 Hou Yi's secret(暴力枚举)
Hou Yi's secret Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4082 Hou Yi's secret --枚举
题意: 给n个点,问最多有多少个相似三角形(三个角对应相等). 解法: O(n^3)枚举点,形成三角形,然后记录三个角,最后按三个角度依次排个序,算一下最多有多少个连续相等的三元组就可以了. 注意:在 ...
- HDU 4082 Hou Yi's secret(暴力)
直接6重循环就行了吧...判三角形相似直接从小到大枚举两向量夹角是否相等就行了.注意去重点跟三点共线就行了... #include<algorithm> #include<iostr ...
- HDU - 4082 Hou Yi's secret
题意:射箭落在n个点,任取三点可构成一个三角形,问最大的相似三角形集(一组互相相似的三角形)的个数. 分析: 1.若n个点中有相同的点,要去重,题目中说射箭会形成洞,任选三个洞构成三角形,因此射在同一 ...
- 2018.07.04 POJ 2398 Toy Storage(二分+简单计算几何)
Toy Storage Time Limit: 1000MS Memory Limit: 65536K Description Mom and dad have a problem: their ch ...
- HDU 5795 A Simple Nim(简单Nim)
p.MsoNormal { margin: 0pt; margin-bottom: .0001pt; text-align: justify; font-family: Calibri; font-s ...
- HDU 5073 Galaxy (2014 Anshan D简单数学)
HDU 5073 Galaxy (2014 Anshan D简单数学) 题目链接http://acm.hdu.edu.cn/showproblem.php?pid=5073 Description G ...
- ●POJ 1556 The Doors(简单计算几何+最短路)
●赘述题目 10*10的房间内,有竖着的一些墙(不超过18个).问从点(0,5)到(10,5)的最短路. 按照输入样例,输入的连续5个数,x,y1,y2,y3,y4,表示(x,0--y1),(x,y2 ...
- HDU 4720 Naive and Silly Muggles (简单计算几何)
Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
随机推荐
- tengine安装
下载地址: http://tengine.taobao.org/download_cn.html $tar -xvzf tengine-2.1.2.tar.gz $./configure$ make$ ...
- 阿里云centos增加swap(虚拟内存)
我的阿里云服务器默认是没有配swap交换文件. 创建swap根目录 mkdir /swap 创建swap dd if=/dev/zero of=/swap/swap bs=1024 count=102 ...
- Maven 如何为不同的环境打包 —— 开发、测试和生产环境
在开发过程中,我们的软件会面对不同的运行环境,比如开发环境.测试环境.生产环境,而我们的软件在不同的环境中,有的配置可能会不一样,比如数据源配置.日志文件配置.以及一些软件运行过程中的基本配置,那每次 ...
- [mysql] mysqldump 导出数据库表
1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构 ...
- Winform用匿名方法新建线程的方法
作用:1.将耗时的操作放在单独的线程,加快UI的响应速度.Thread t = new Thread(delegate() { parse.ParseDay(StockCode, FileName); ...
- (转)C# 使用BackgroundWorker
本文转载自:http://blog.csdn.net/andrew_wx/article/details/6615077 该例子为使用BackgroundWorker在TextBox文本中产生一个10 ...
- How to install Wordpress 4.0 on CentOS 7.0
This document describes how to install and configure Wordpress 4.0 on CentOS 7.0. WordPress started ...
- ASP.net中网站访问量统计方法代码(在线人数,本月访问,本日访问,访问流量,累计访问)
一.建立一个数据表IPStat用于存放用户信息 我在IPStat表中存放的用户信息只包括登录用户的IP(IP_Address),IP来源(IP_Src)和登录时间 (IP_DateTime),些表的信 ...
- VisualStudio Form文件构成说明
创建一个窗体Form1.cs 后,在他的下一级,有两个子文件: Form1.Designer.cs 和Form1.resx 这两个子文件 Form1.Designer.cs是VS自动生成用作UI的绘制 ...
- 杀死future处理的阻塞线程
public class Test{ public static void main(String[] args){ ExecutorService pool = Executors.newFixed ...