zoukankan      html  css  js  c++  java
  • 洛谷P1142 轰炸 数学

    洛谷P1142 轰炸
    数学

    题意 给出若干个点,求解最多有几个点在同一直线上
    一种做法就是枚举任意两个点,求他们的斜率然后算一下还有几个点和他们的斜率一样,
    这样复杂度是 O(N^3) n<=700 讲道理是过不去的,但是数据太水,就过了
    另外一种做法就是由楼上提供的,我是来提供代码的,
    枚举以一个点作为原点,然后求其他点,与他的斜率,然后排序一下就行了
    复杂度O(n^2logn)

     1 #include <cstdio>
     2 #include <cstdlib>
     3 #include <cmath>
     4 #include <cstring>
     5 #include <algorithm>
     6 #include <string>
     7 #include <iomanip>
     8 #include <iostream>
     9 using namespace std ;
    10 
    11 const int maxn = 709 ;
    12 const double inf = 1e9 ; 
    13 struct node{
    14     int x,y ; 
    15 };
    16 node a[701] ;
    17 int n,ans,sum ; 
    18 double x,y,dist[maxn] ;
    19 
    20 int main() 
    21 {
    22     scanf("%d",&n) ;
    23     for(int i=1;i<=n;i++) 
    24     {
    25         scanf("%d%d",&a[ i ].x,&a[ i ].y) ; 
    26     }
    27     ans = min(2,n) ;
    28     for(int i=1;i<=n;i++) 
    29     {
    30         
    31         for(int j=1;j<=n;j++) 
    32         {
    33             if(i==j) 
    34             {
    35                 dist[ i ] = -inf-1 ; 
    36                 continue ;
    37             }
    38             if(a[i].x==a[j].x) dist[ j ] = inf ; 
    39             dist[ j ] = (double)(a[j].y-a[i].y) / (a[j].x-a[i].x) ; 
    40          }
    41          sort(dist+1,dist+n+1) ;
    42          sum = 0 ;
    43          for(int j=1;j<=n;j++) 
    44              if(dist[j]!=dist[j-1])  
    45              {
    46                  ans = max(ans,sum+1) ;
    47                  sum = 1 ; 
    48              }
    49              else sum++ ;
    50         ans = max(ans,sum+1) ;
    51     }
    52     if(n==1) ans = 1 ;
    53     printf("%d",ans) ;
    54     
    55     return 0 ;
    56 }
  • 相关阅读:
    程序员写 2000 行 if else?领导:这个锅我不背
    var_dump
    CURL常用命令
    Socket阻塞模式和非阻塞模式的区别
    php框架之odp(一)
    git命令之git clone用法
    git push origin master和git push有什么区别?
    YouTube上最火的十个大数据视频
    Java两种核心机制
    Java四类八种数据类型
  • 原文地址:https://www.cnblogs.com/third2333/p/6907249.html
Copyright © 2011-2022 走看看