http://poj.org/problem?id=1118

直接枚举O(n^3) 1500ms能过...数据太水了...这个代码就不贴了...

斜率排序O(n^2logn)是更好的做法...枚举斜率...直线方程相同的线段数量k...一定满足方程 n(n-1)/2=k  ---------------  还真是baka. 到2点才想出这个结论

特判只有一个点,两个点的情况...500ms AC

  1. /********************* Template ************************/
  2. #include <set>
  3. #include <map>
  4. #include <list>
  5. #include <cmath>
  6. #include <ctime>
  7. #include <deque>
  8. #include <queue>
  9. #include <stack>
  10. #include <bitset>
  11. #include <cstdio>
  12. #include <string>
  13. #include <vector>
  14. #include <cassert>
  15. #include <cstdlib>
  16. #include <cstring>
  17. #include <sstream>
  18. #include <fstream>
  19. #include <numeric>
  20. #include <iomanip>
  21. #include <iostream>
  22. #include <algorithm>
  23. #include <functional>
  24. using namespace std;
  25.  
  26. #define EPS 1e-8
  27. #define MAXN (int)5e5+5
  28. #define MOD (int)1e9+7
  29. #define PI acos(-1.0)
  30. #define LINF ((1LL)<<50)
  31. #define INF (1<<30)
  32. #define DINF (1e10)
  33. #define max(a,b) ((a) > (b) ? (a) : (b))
  34. #define min(a,b) ((a) < (b) ? (a) : (b))
  35. #define max3(a,b,c) (max(max(a,b),c))
  36. #define min3(a,b,c) (min(min(a,b),c))
  37. #define BUG cout<<"BUG! "<<endl
  38. #define LLL cout<<"--------------"<<endl
  39. #define L(t) (t << 1)
  40. #define R(t) (t << 1 | 1)
  41. #define Mid(a,b) ((a + b) >> 1)
  42. #define lowbit(a) (a & -a)
  43. #define FIN freopen("in.txt","r",stdin)
  44. #define FOUT freopen("out.txt","w",stdout)
  45. #pragma comment (linker,"/STACK:102400000,102400000")
  46.  
  47. // typedef long long LL;
  48. // typedef unsigned long long ULL;
  49. // typedef __int64 LL;
  50. // typedef unisigned __int64 ULL;
  51. // int gcd(int a,int b){ return b?gcd(b,a%b):a; }
  52. // int lcm(int a,int b){ return a*b/gcd(a,b); }
  53.  
  54. /********************* F ************************/
  55. struct POINT{
  56. double x,y;
  57. POINT(double _x = , double _y = ):x(_x),y(_y){};
  58. int id;
  59. }p[];
  60. struct LINE{
  61. POINT a,b;
  62. double K,B;
  63. LINE(POINT _a = ,POINT _b = ):a(_a),b(_b){
  64. if((a.x - b.x) == ){
  65. K = DINF;
  66. B = a.x;
  67. }else{
  68. K = ((a.y - b.y) / (a.x - b.x));
  69. B = (- (b.x * a.y - a.x * b.y) / (a.x - b.x));
  70. }
  71. }
  72. }L[];
  73. bool cmp(LINE a,LINE b){
  74. if(a.K == b.K) return a.B < b.B;
  75. return a.K < b.K;
  76. }
  77. int main()
  78. {
  79. //FIN;
  80. int n;
  81. while(cin>>n && n){
  82. for(int i = ; i < n ; i++)
  83. scanf("%lf%lf",&p[i].x,&p[i].y);
  84. if(n == || n == ){
  85. printf("%d\n",n);
  86. continue;
  87. }
  88. int cnt = ;
  89. for(int i = ; i < n ; i++)
  90. for(int j = i+ ; j < n ; j++)
  91. L[cnt++] = LINE(p[i],p[j]);
  92. sort(L,L+cnt,cmp);
  93. int m = -INF;
  94. for(int i = ; i < cnt- ; i++){
  95. int c = ;
  96. while(L[i].K == L[i+].K && L[i].B == L[i+].B){
  97. c++;
  98. i++;
  99. }
  100. c = sqrt((c+)*)+;
  101. m = max(m,c);
  102. }
  103. printf("%d\n",m);
  104. }
  105. return ;
  106. }

POJ 1118 Lining Up 直线穿过最多的点数的更多相关文章

  1. Leetcode 149.直线上最多的点数

    直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | |        o ...

  2. Java实现 LeetCode 149 直线上最多的点数

    149. 直线上最多的点数 给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | ...

  3. UVa 270 & POJ 1118 - Lining Up

    题目大意:给一些点,找出一条直线使尽可能多的点在这条直线上,求这条直线上点的个数. 以每一个点为原点进行枚举,求其它点的斜率,斜率相同则说明在一条直线上.对斜率排序,找出斜率连续相等的最大长度. #i ...

  4. poj 1118 Lining Up(水题)

    再思考一下好的方法,水过,数据太弱! 本来不想传的! #include <iostream> using namespace std; #define MAX 702 /*284K 422 ...

  5. POJ 1118 Lining Up

    枚举,排序. 先将所有点按双关键字排序,然后枚举线的顶点$P$,剩余的点以$P$为中心进行极角排序,可以取个$gcd$,这样一样的点就排在一起了,然后统计一下更新答案. #pragma comment ...

  6. [Swift]LeetCode149. 直线上最多的点数 | Max Points on a Line

    Given n points on a 2D plane, find the maximum number of points that lie on the same straight line. ...

  7. leetcode 149. 直线上最多的点数 解题报告

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | | o | o | o +------- ...

  8. 149 Max Points on a Line 直线上最多的点数

    给定二维平面上有 n 个点,求最多有多少点在同一条直线上. 详见:https://leetcode.com/problems/max-points-on-a-line/description/ Jav ...

  9. Max Points on a Line(直线上最多的点数)

    给定一个二维平面,平面上有 n 个点,求最多有多少个点在同一条直线上. 示例 1: 输入: [[1,1],[2,2],[3,3]] 输出: 3 解释: ^ | |        o |     o | ...

随机推荐

  1. POJ - 3984 - 迷宫问题 (DFS)

    迷宫问题 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 10936   Accepted: 6531 Description ...

  2. C++ STL:vector

      不定长数组:vetor 它就像一个二维数组.仅仅是第一维的大小是固定的,可是第二维的大小不固定. watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvdTAx ...

  3. 数据库阿里连接池 Druid配置详解以及web监控统计

    java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,有不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色的性能,也 ...

  4. 4.菜鸟教你一步一步开发 web service 之 axis 客户端创建

    转自:https://blog.csdn.net/shfqbluestone/article/details/37723517 在上个教程中我们创建了一个 axis 服务端的 web service ...

  5. html&css基础笔记

    有道笔记:http://note.youdao.com/noteshare?id=a6d7eab195085655bbfce86665524e35 一 HTML结构标签 HTML基本标签 标题标签 & ...

  6. vue 实现文本域还剩多少字符

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. py2exe打包python脚本

    在工作中遇到将python脚本转换成exe可执行程序的需求,通过查询可以使用py2exe来构建满足要求的程序,这里简要说明一下使用步骤. 一.py2exe是一个将python脚本转换成windows上 ...

  8. msp430在ccsv5下出现的问题总结

    一.内存问题 问题描写叙述,报错: program will not fit into available memory.  placement with alignment fails for se ...

  9. Android实现本地图片选择及预览缩放效果仿春雨医生

    在做项目时常常会遇到选择本地图片的需求.曾经都是懒得写直接调用系统方法来选择图片.可是这样并不能实现多选效果.近期又遇到了,所以还是写一个demo好了.以后也方便使用.还是首先来看看效果 显示的图片使 ...

  10. js---10作用域链

    <html> <head> <title>scope basic</title> </head> <body> <scri ...