HDU-3548-Enumerate the Triangles
求由所有的点组成的三角形中周长最小的三角形的周长
1.将所有的点按横坐标大小排序
2.从第一个点开始往后枚举,判断能否组成三角形,判断当前三角形周长是否小于已经得到的最小周长
代码如下:
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
const double INF=1000000000.0;
double juli(double x1,double y1,double x2,double y2)
{
return (sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
}
struct point
{
int x;
int y;
} p[+];
bool cmp(point a,point b)
{
return a.x<b.x;
}
bool One_Line(const point& s1,const point &s2,const point &s3 )
{
return (s3.x-s2.x)*(s2.y-s1.y) == (s2.x-s1.x)*(s3.y-s2.y);
}
int main()
{
int T,n,i,j,t=;
scanf("%d",&T);
while(T--)
{
cin>>n;
for(i=; i<n; i++)
cin>>p[i].x>>p[i].y;
sort(p,p+n,cmp);
double mini=INF;
int flog=;
for(i=; i<n; i++)
{
for(j=i+; j<n; j++)
{
if(mini<=*(p[j].x-p[i].x)) break ;//横坐标的差大于周长的一半,它都大于周长的一半了
//由这两点组成的三角形周长肯定大于mini,不要
double a1=juli(p[i].x,p[i].y,p[j].x,p[j].y);
if(mini<=*a1) continue ; //同上,只是不跳出循环,判断下一个
for(int k=j+; k<n; k++)
{
if(mini<=*(p[j].x-p[k].x)) break ;
if(One_Line(p[i],p[j],p[k])) continue ;
double a2=juli(p[j].x,p[j].y,p[k].x,p[k].y);
double a3=juli(p[i].x,p[i].y,p[k].x,p[k].y);
if(a1+a2+a3<mini)
{
mini=a1+a2+a3;
flog=;
}
}
}
}
cout<<"Case "<<t++<<": ";
if(flog) printf("%.3lf\n",mini);
else cout<<"No Solution"<<endl;
}
return ;
}
HDU-3548-Enumerate the Triangles的更多相关文章
- hdu 5784 How Many Triangles 计算几何,平面有多少个锐角三角形
How Many Triangles 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5784 Description Alice has n poin ...
- HDU 5784 How Many Triangles
计算几何,极角排序,双指针,二分. 直接找锐角三角形的个数不好找,可以通过反面来求解. 首先,$n$个点最多能组成三角形个数有$C_n^3$个,但是这之中还包括了直角三角形,钝角三角形,平角三角形,我 ...
- [HDU 5135] Little Zu Chongzhi's Triangles (dfs暴搜)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意:给你n条边,选出若干条边,组成若干个三角形,使得面积和最大.输出最大的面积和. 先将边 ...
- hdu 1396 Counting Triangles(递推)
Counting Triangles Problem Description Given an equilateral triangle with n thelength of its side, p ...
- hdu 5135 Little Zu Chongzhi's Triangles
http://acm.hdu.edu.cn/showproblem.php?pid=5135 题意:给你N个木棍的长度,然后让你组成三角形,问你组成的三角形的和最大是多少? 思路:先求出可以组成的所有 ...
- HDU 5784 (计算几何)
Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...
- HDU 1176 免费馅饼:dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 题意: 横坐标范围为[0,10],你在第0秒站在坐标为5的地方. 在接下来的一段时间内,会有n个 ...
- Python generator 的yield (enumerate)
生成杨辉三角 1 1 1 1 2 1 1 3 3 1 1 4 6 4 1 1 5 10 10 5 1 def triangles(max): L = [1,] while len(L) - 1 < ...
- HDUOJ-Counting Triangles
Counting Triangles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- 转载:hdu 题目分类 (侵删)
转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...
随机推荐
- XproerIM V1,2,12,65376 发布。
客户端下载:http://yunpan.cn/QTCxKvcpC4Iet 访问密码 9141 更新说明:1.增加表情功能. 更新代码截图:
- php 乱码解决
1)首先确定你的终端编码,如果你不知道如何确定,分别执行这两段代码,看看哪个能输出中文. PHP code ? 1 echo pack("H12","E4B8ADE6 ...
- CentOS使用virtualenv搭建独立的Python环境-python虚拟环境
CentOS使用virtualenv搭建独立的Python环境-python虚拟环境 virtualenv可以搭建虚拟且独立的python环境,可以使每个项目环境与其他项目独立开来,保持环境的干净,解 ...
- SVM3 Soft Margin SVM
之前分为两部分讨论过SVM.第一部分讨论了线性SVM,并且针对线性不可分的数据,把原始的问题转化为对偶的SVM求解.http://www.cnblogs.com/futurehau/p/6143178 ...
- modelsim基本操作步骤及每步骤问题解决1(后续有改动会更新)
①File ->New =>Project出现工程对话框->1)工程命名,2)安放路径自己设置,3)库默认work.点击OK 然后出现添加文件到工程对话框->可新建文件或直接添 ...
- 反向代理及如何获得原始IP
在现代网站架构中,scalability 已经不再是可有可无的质量属性,而是决定着网站的生死攸关,所以稍微上规模的站点都不会只有一个web server,让internet clients 直接与其交 ...
- UNIX环境高级编程--10. 信号
第十章 信号 信号是软中断,提供了一种处理异步事件的方法.例如,终端用户键入终端键,会通过信号机制停止一个进程,或及早终止管道中的下一个程序. 每个信号都有一个名字,SIG开 ...
- codevs 2756树上的路径
题意: 2756 树上的路径 时间限制: 3 s 空间限制: 128000 KB 题目等级 : 大师 Master 题目描述 Description 给出一棵树,求出最小的k,使得,且在树 ...
- ios 项目引用全局pch文件
1.在项目中新建添加PCH文件 把这些记下来,下次直接粘贴:$(SRCROOT)/工程名/pch文件名
- NGUI 使用UITable(或UIGrid)注意事项
在ScrollView显示区域中,若Item数量不足以超出显示区域,有可能不是贴着ScrollView最边缘位置显示!这个时候可以按如下方法调整: 因为实际情况中,往ScrollView中添加Item ...