• 【t078】连线游戏


    Time Limit: 1 second
    Memory Limit: 128 MB

    【问题描述】

     佳佳最近发明了一个游戏,来考验自命不凡的津津。游戏开始的时候,佳佳会给津津一块画着N (2 <= N <= 200)个不重合的点
    的木板,其中第i个点的横、纵坐标分别为Xi和Yi (-1,000 <= Xi <=1,000;-1,000 <= Yi <= 1,000)。
      津津可以选两个点画一条过它们的直线,当且仅当平面上不存在与画出直线平行的直线。游戏结束时津津的得分,就是她画出
    直线的总条数。为了在游戏中胜出,津津找到了你,希望你帮她计算一下最大可能得分。 【输出说明】   津津能画出以下4种斜率的直线:-1,0,1/3以及1。

    【输入格式】

     文件输入的第一行为一个正整数N,表示木板上面点的个数,第二行到第n+1行每行两个整数Xi、Yi,表示每个点的坐标。

    【输出格式】

     文件输出只有一个整数,表示津津的最大得分,即她能画出互不平行直线的最多个数。

    Sample Input

    4
    -1 1
    -2 0
    0 0
    1 1

    Sample Output

    4

    【题目链接】:http://noi.qz5z.com/viewtask.asp?id=t078

    【题解】

    其实就是让你问这N个点能形成多少条斜率不同的直线。
    找出有多少种斜率的直线;
    (竖直线用一个bool型的值特判一下);
    然后递增在答案上;
    斜率重复的判断用个double类的map就好;

    【完整代码】

    #include <cstdio>
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <map>
    using namespace std;
    #define rei(x) scanf("%d",&x)
    #define pii pair<int,int>
    #define fi first
    #define se second
    #define pb push_back
    #define mp make_pair
    int n,ans;
    bool special;
    map <double,int> dic;
    vector <pii> v;
    
    int main()
    {
        //freopen("F:\rush.txt","r",stdin);
        rei(n);
        for (int i = 1;i <= n;i++)
        {
            int x,y;
            rei(x);rei(y);
            v.pb(mp(x,y));
        }
        for (int i = 0;i <= n-2;i++)
            for (int j = i+1;j <= n-1;j++)
            {
                int x1 = v[i].fi,y1 = v[i].se;
                int x2 = v[j].fi,y2 = v[j].se;
                if (x1==x2)
                {
                    if (!special)
                    {
                        ans++;
                        special = true;
                    }
                    continue;
                }
                double t = ((y2-y1)*1.0)/((x2-x1)*1.0);
                if (!dic[t])
                {
                    dic[t] = 1;
                    ans++;
                }
            }
        printf("%d
    ",ans);
        return 0;
    }
    
  • 相关阅读:
    转载 cglib代理和java代理
    解决流不能重复使用
    @RestController的方法中 路径参数带.(点号)配置
    Spring中application*的使用
    转载自用学习 侵权删
    转载学习 多线程中的内存模型和关键字
    转载 幂等的使用
    转载学习 关于线程池
    FastJSON 转换List<T> ,Map<T,T>泛型失败 处理方法
    quartz报错 Couldn't retrieve job because the BLOB couldn't be deserialized: null
  • 原文地址:https://www.cnblogs.com/AWCXV/p/7626675.html
Copyright © 2020-2023  润新知