zoukankan      html  css  js  c++  java
  • C 几何水题 求不同斜率的数目 枚举+set

    Description

    Master LU 非常喜欢数学,现在有个问题:在二维空间上一共有n个点,LU每连接两个点,就会确定一条直线,对应有一个斜率。现在LU把平面内所有点中任意两点连线,得到的斜率放入一个集合中(若斜率不存在则不计入集合),他想知道这个集合中有多少个元素。


    Input

    第一行是一个整数T,代表T组测试数据
    每组数据第一行是一个整数n,代表点的数量。2<n<1000
    接下来n行,每行两个整数,0<=x<10000,0<=y<10000,代表点的坐标

    Output

    输出斜率集合中有多少个元素

    Sample Input

    2
    4
    1 1
    2 2
    3 3
    3 6
    4
    1 1
    2 2
    2 0
    3 1

    Sample Output

    3
    3

    # include <cstdio>
    # include <cstring>
    # include <set>
    # define LL long long
    # define INF 0x3f3f3f3f
    using namespace std ;
    
    struct pot
    {
        int x ;
        int y ;
    
    }p[1010];
    
    double xielv(pot t1 , pot t2)
    {
        double temp1 = double(t2.y - t1.y) ;
        double temp2 = double(t2.x - t1.x) ;
        if (temp2 == 0)
            return INF ;
        else
            return double(temp1/temp2) ;
    }
    
    int main ()
    {
      //  freopen("in.txt","r",stdin) ;
        int T ;
        scanf("%d" , &T) ;
        while (T--)
        {
           int n , i ,j;
           set<double> s ;
           scanf("%d" , &n) ;
           for (i = 0 ; i < n ;i++)
            scanf("%d %d" , &p[i].x , &p[i].y) ;
           for (i = 0 ; i < n ; i++)
            for (j = i +1 ; j < n ; j++)
           {
               double t = xielv(p[i],p[j]) ;
               if (t != INF)
                  s.insert(t) ;
           }
           printf("%d
    " , s.size()) ;
        }
    
    
    
        return 0 ;
    }
    View Code
  • 相关阅读:
    hadoop——数据清洗测试
    本地配置hadoop
    从textarea中获取数据后按原样显示
    form自动提交
    艺术和代码的结合 turtle + python 的结合
    python-->微信支付
    python-图片流传输(url转换二维码)
    python-qrcode-二维码
    Java 通过先序中序序列生成二叉树
    Java 实现二叉树的构建以及3种遍历方法
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/4529040.html
Copyright © 2011-2022 走看看