zoukankan      html  css  js  c++  java
  • BZOJ_1610_[Usaco2008_Feb]_Line连线游戏_(计算几何基础+暴力)

    描述


    http://www.lydsy.com/JudgeOnline/problem.php?id=1610

    给出n个点,问两两确定的直线中,斜率不同的共有多少条.

    分析


    暴力枚举直线,算出来斜率放在k数组里面(斜率不存在记为INF),然后去个重统计个数就行了.

    其实特水...

     1 #include <bits/stdc++.h>
     2 using namespace std;
     3 
     4 const int maxn=200+5;
     5 const double eps=1e-8,INF=0x7fffffff;
     6 int n,cnt;
     7 double k[(maxn*maxn)>>1];
     8 
     9 struct pt{
    10     double x,y;
    11     pt(double x=0,double y=0):x(x),y(y){}
    12 }p[maxn];
    13 int dcmp(double x){ if(fabs(x)<eps) return 0; return x<0?-1:1; }
    14 double getk(pt a,pt b){
    15     if(dcmp(a.x-b.x)==0) return INF;
    16     return (a.y-b.y)/(a.x-b.x);
    17 }
    18 int main(){
    19     scanf("%d",&n);
    20     for(int i=1;i<=n;i++) scanf("%lf%lf",&p[i].x,&p[i].y);
    21     for(int i=1;i<=n;i++)
    22         for(int j=i+1;j<=n;j++)
    23             k[++cnt]=getk(p[i],p[j]);
    24     sort(k+1,k+cnt+1);
    25     int ans=0;
    26     for(int i=1;i<=cnt;i++) if(k[i]!=k[i-1]) ans++;
    27     printf("%d
    ",ans);
    28     return 0;
    29 }
    View Code

    p.s.

    1.也可以用unique去重.注意要先排序.

    1610: [Usaco2008 Feb]Line连线游戏

    Time Limit: 5 Sec  Memory Limit: 64 MB
    Submit: 1810  Solved: 815
    [Submit][Status][Discuss]

    Description

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

    Input

    * 第1行: 输入1个正整数:N

     * 第2..N+1行: 第i+1行用2个用空格隔开的整数X_i、Y_i,描述了点i的坐标

    Output

    第1行: 输出1个整数,表示贝茜的最大得分,即她能画出的互不平行的直线数

    Sample Input

    4
    -1 1
    -2 0
    0 0
    1 1

    Sample Output

    * 第1行: 输出1个整数,表示贝茜的最大得分,即她能画出的互不平行的直线数

    HINT

    4 输出说明: 贝茜能画出以下4种斜率的直线:-1,0,1/3以及1。

    Source

  • 相关阅读:
    209. Minimum Size Subarray Sum
    208. Implement Trie (Prefix Tree)
    207. Course Schedule
    206. Reverse Linked List
    205. Isomorphic Strings
    204. Count Primes
    203. Remove Linked List Elements
    201. Bitwise AND of Numbers Range
    199. Binary Tree Right Side View
    ArcGIS API for JavaScript 4.2学习笔记[8] 2D与3D视图同步
  • 原文地址:https://www.cnblogs.com/Sunnie69/p/5536470.html
Copyright © 2011-2022 走看看