• 不平行的直线


    https://ac.nowcoder.com/acm/contest/5773/B

    给一些点的横纵坐标,问最多有多少不平行的直线,其实就是问有多少种斜率。

    可以用map,也可以用set

    map

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e2;
    pair<double,double>p[maxn+5];
    map<double,int>m;
    int main()
    {
        int n;cin>>n;
        for(int i=0;i<n;i++){
            cin>>p[i].first>>p[i].second;
        }
        int cnt=0,flag=0;
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                if(p[i].first==p[j].first)flag=1;
                else if(!m[(p[i].second-p[j].second)/(p[i].first-p[j].first)]){
                        m[(p[i].second-p[j].second)/(p[i].first-p[j].first)]=1;
                        cnt++;
                }
            }
        }
        cout<<cnt+flag<<endl;
        return 0;
    }
    View Code

    set

    #include<bits/stdc++.h>
    using namespace std;
    const int maxn=2e2;
    pair<double,double>p[maxn+5];
    set<double>m;
    int main()
    {
        int n;cin>>n;
        for(int i=0;i<n;i++){
            cin>>p[i].first>>p[i].second;
        }
        int cnt=0,flag=0;
        for(int i=0;i<n;i++){
            for(int j=i+1;j<n;j++){
                if(p[i].first==p[j].first)flag=1;
                else{
                    m.insert((p[i].second-p[j].second)/(p[i].first-p[j].first));
                }
                }
            }
        cout<<m.size()+flag<<endl;
        return 0;
    }
    View Code

     

  • 相关阅读:
    第三周学习进度
    计算最低价格
    第二阶段冲刺5
    第二阶段冲刺4
    第十三周进度条
    第二阶段冲刺3
    寻找小水王
    第二阶段冲刺2
    第二阶段冲刺1
    构建之法阅读笔记
  • 原文地址:https://www.cnblogs.com/mohari/p/12961366.html
Copyright © 2020-2023  润新知