zoukankan      html  css  js  c++  java
  • Codeforces Round #558 (Div. 2)C(计算几何,排列组合,模拟)

    #include<bits/stdc++.h>
    using namespace std;
    typedef struct{
     double k,b;
    }node;
    node k[1000007];
    bool cmp(node&a,node&b){
     if(a.k==b.k)
      return a.b<b.b;
     return a.k<b.k;
    }
    long long x[1007],y[1007];
    int main(){
     long long n,ans=0,tot=0;
     scanf("%lld",&n);
     for(long long i=1;i<=n;++i)
      scanf("%lld%lld",&x[i],&y[i]);
     for(long long i=1;i<=n;++i){
      for(long long j=1;j<i;++j){
       if(x[i]!=x[j])
        k[++tot].k=(y[i]-y[j])*1.0/(x[i]-x[j]),k[tot].b=y[i]-x[i]*k[tot].k;
       else
        k[++tot].b=x[i],k[tot].k=1000000;
      }
     }
     sort(k+1,k+1+tot,cmp);
     long long i=1;
     for(long long i=tot;i>=1;--i)
      if(k[i].k==k[i-1].k&&k[i].b==k[i-1].b)
       k[i].k=10000000;
     sort(k+1,k+1+tot,cmp);
     for(long long i=1;i<=tot;++i)
      if(k[i].k==10000000){
       tot=i-1;
       break;
      }
     while(i<=tot){
      long long x=i;
      while(k[i].k==k[i+1].k)
       i++;
      ans+=(i-x+1)*(x-1);
      i++;
     }
     cout<<ans;
     return 0;
    }

    保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
  • 相关阅读:
    max-points-on-a-line
    evaluate-reverse-polish-notation
    minimum-depth-of-binary-tree
    ML&MLDS笔记:偏差 vs 方差
    机器人的运动范围
    矩阵中的路径
    滑动窗口的最大值
    数据流中的中位数
    1.微服务架构设计(英文-起源)
    5.如何复制一个文件(编程)
  • 原文地址:https://www.cnblogs.com/ldudxy/p/10844039.html
Copyright © 2011-2022 走看看