求由所有的点组成的三角形中周长最小的三角形的周长

1.将所有的点按横坐标大小排序

2.从第一个点开始往后枚举,判断能否组成三角形,判断当前三角形周长是否小于已经得到的最小周长

代码如下:

  1. #include<cstdio>
  2. #include<algorithm>
  3. #include<iostream>
  4. #include<cmath>
  5. using namespace std;
  6. const double INF=1000000000.0;
  7. double juli(double x1,double y1,double x2,double y2)
  8. {
  9. return (sqrt((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)));
  10. }
  11. struct point
  12. {
  13. int x;
  14. int y;
  15. } p[+];
  16. bool cmp(point a,point b)
  17. {
  18. return a.x<b.x;
  19. }
  20. bool One_Line(const point& s1,const point &s2,const point &s3 )
  21. {
  22. return (s3.x-s2.x)*(s2.y-s1.y) == (s2.x-s1.x)*(s3.y-s2.y);
  23. }
  24. int main()
  25. {
  26. int T,n,i,j,t=;
  27. scanf("%d",&T);
  28. while(T--)
  29. {
  30. cin>>n;
  31. for(i=; i<n; i++)
  32. cin>>p[i].x>>p[i].y;
  33. sort(p,p+n,cmp);
  34. double mini=INF;
  35. int flog=;
  36. for(i=; i<n; i++)
  37. {
  38. for(j=i+; j<n; j++)
  39. {
  40. if(mini<=*(p[j].x-p[i].x)) break ;//横坐标的差大于周长的一半,它都大于周长的一半了
  41. //由这两点组成的三角形周长肯定大于mini,不要
  42. double a1=juli(p[i].x,p[i].y,p[j].x,p[j].y);
  43. if(mini<=*a1) continue ; //同上,只是不跳出循环,判断下一个
  44. for(int k=j+; k<n; k++)
  45. {
  46. if(mini<=*(p[j].x-p[k].x)) break ;
  47. if(One_Line(p[i],p[j],p[k])) continue ;
  48. double a2=juli(p[j].x,p[j].y,p[k].x,p[k].y);
  49. double a3=juli(p[i].x,p[i].y,p[k].x,p[k].y);
  50. if(a1+a2+a3<mini)
  51. {
  52. mini=a1+a2+a3;
  53. flog=;
  54. }
  55. }
  56. }
  57. }
  58. cout<<"Case "<<t++<<": ";
  59. if(flog) printf("%.3lf\n",mini);
  60. else cout<<"No Solution"<<endl;
  61. }
  62. return ;
  63. }

HDU-3548-Enumerate the Triangles的更多相关文章

  1. hdu 5784 How Many Triangles 计算几何,平面有多少个锐角三角形

    How Many Triangles 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5784 Description Alice has n poin ...

  2. HDU 5784 How Many Triangles

    计算几何,极角排序,双指针,二分. 直接找锐角三角形的个数不好找,可以通过反面来求解. 首先,$n$个点最多能组成三角形个数有$C_n^3$个,但是这之中还包括了直角三角形,钝角三角形,平角三角形,我 ...

  3. [HDU 5135] Little Zu Chongzhi's Triangles (dfs暴搜)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5135 题目大意:给你n条边,选出若干条边,组成若干个三角形,使得面积和最大.输出最大的面积和. 先将边 ...

  4. hdu 1396 Counting Triangles(递推)

    Counting Triangles Problem Description Given an equilateral triangle with n thelength of its side, p ...

  5. hdu 5135 Little Zu Chongzhi's Triangles

    http://acm.hdu.edu.cn/showproblem.php?pid=5135 题意:给你N个木棍的长度,然后让你组成三角形,问你组成的三角形的和最大是多少? 思路:先求出可以组成的所有 ...

  6. HDU 5784 (计算几何)

    Problem How Many Triangles (HDU 5784) 题目大意 给定平面上的n个点(n<2000),询问可以组成多少个锐角三角形. 解题分析 直接统计锐角三角形较困难,考虑 ...

  7. HDU 1176 免费馅饼:dp

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1176 题意: 横坐标范围为[0,10],你在第0秒站在坐标为5的地方. 在接下来的一段时间内,会有n个 ...

  8. 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 < ...

  9. HDUOJ-Counting Triangles

    Counting Triangles Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Other ...

  10. 转载:hdu 题目分类 (侵删)

    转载:from http://blog.csdn.net/qq_28236309/article/details/47818349 基础题:1000.1001.1004.1005.1008.1012. ...

随机推荐

  1. SimpleDateFormat做成员或者静态成员多线程安全隐患

    转自:http://blog.csdn.net/jeamking/article/details/7183958 有时我们在同一个类中都是使用同一种日期格式,又或者为了减少new SimpleDate ...

  2. java学习第5天

    一维数组完了就是二维数组,和一位数组类似 .我们定义二维数组用的是 int[] []arr=new int[m][n],与一维类似,它在堆内存中存放,并以地址的形式访问,如下图..   而遍历二维数组 ...

  3. 26、首先通过javascript包的异步加载来学习echarts包的结构

    1.在这里先写一写前言,今天在公司搞定了一个对于滚动条进行定位的case,明天开始做TestManagement. 首先大家先来一起看一看流行的javascript文件的加载方式,这里采用别人博客上的 ...

  4. C#中combobox 控件属性、事件、方法

    一 .combobox 属性.事件.方法公共属性 名称 说明 AccessibilityObject 获取分配给该控件的 AccessibleObject. AccessibleDefaultActi ...

  5. nginx配置文件注释

    #定义Nginx运行的用户和用户组user www www; #nginx进程数,建议设置为等于CPU总核心数.worker_processes 8; #全局错误日志定义类型,[ debug | in ...

  6. jstl格式化数字

    jstl中的<fmt:formatNumber>标签   设置显示时间戳<%    request.setAttribute("currentTimeStamp" ...

  7. 循序渐进Python3(三) -- 0 -- 初识函数

    函数 如果我们要计算一个圆的面积,就需要知道它的半径,然后根据公式S=3.14*r*r算出它的面积,如果我们要算100个圆的面积,则每次我们都需要写公式去计算,是不是很麻烦,但是有了函数的话,我们就不 ...

  8. URL Parsing

    [URL Parsing] urllib.parse.urlparse(urlstring, scheme='', allow_fragments=True) Parse a URL into six ...

  9. maven中添加servlet、jsp依赖

    或者在eclipse中,右键项目名称->Maven->Add Dependency->输入servlet,会自动找到最新的版本(记得联网哦),如图:

  10. phpcms安装

    cms的样式有很多种,我们学习的是phpcms,这些cms都是大同小异,学会了一种就可以使用其它的cms. PHPCMS是一款网站管理软件.该软件采用模块化开发,支持多种分类方式,使用它可方便实现个性 ...