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. ...
随机推荐
- python模块概况,json/pickle,time/datetime,logging
参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html http://www.cnblogs.com/alex3714/articles/51 ...
- RAD 版本迁移工具,不怕升级麻烦了。
RAD 版本迁移工具,不怕升级麻烦了. http://community.embarcadero.com/blogs?view=entry&id=8865 migrationtool.exe ...
- DCOM中的APPID的用处,以及RemoteServerName的传递问题
DCOM中的APPID的用处,以及RemoteServerName的传递问题
- 关于启用 HTTPS 的一些经验分享
https://imququ.com/post/sth-about-switch-to-https.html 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS. ...
- ngx.lua中遇到的小问题
作者: 胡 志伟 分类: ngx_lua, 开发代码 发布时间: 2013-09-26 08:40 ė 6评论关闭 在使用ngx.redirect 到一个新的地址时,错误日志提示: lua entry ...
- X/Y型文案
[X/Y型文案] X型文案人,他们更像你语言学家.修辞学家和诗人,他们的日常工作就是想创意.查词典和构思修辞,以想办法用华丽的表达来描述产品. Y型文案往往并不华丽,有时甚至只不过是简单地描绘出用户心 ...
- git push throws error: RPC failed; result=22, HTTP code = 411的解决办法
原因:默认 Git 设置 http post 的缓存为 1MB,将其设置为 500MB 解决办法如下: git config http.postBuffer 524288000
- WebService 基础使用&cxf第三方Service使用
1.通过Jax-ws自己发布一个webservice 解析:用webservice发布HelloWorld JAX-WS本质就是通过Socket来实现的.2.WSDL文档描述如何直接变成java代码 ...
- 更改appstore开发商名字
个人账号,名字要改,google了半天也没找出解决方案,最后发邮件求助水果,发来解决办法. 您好: 感谢您参与 Apple 开发者计划.我是 Daniel , 非常荣幸能就更改 iTunes Conn ...
- quartus ii13.0~16.0 调用uedit (转载http://blog.sina.com.cn/s/blog_6d5560f00102vax6.html)
转自 http://blog.sina.com.cn/s/blog_6d5560f00102vax6.html Quartus II 中的文本编辑软件不好用,比较习惯与UE(Uedit32/ultra ...