zoukankan      html  css  js  c++  java
  • 2020牛客暑期多校训练营(第二场)[ Boundary]

    2020牛客暑期多校训练营(第二场) Boundary

    题目大意:

    给你n个点,问最多有多少个点在同一个圆的边界,要求原点也必须在这个圆上。

    题解:

    这个题目我就是看的题解写的,所以直接看题解吧。【题解】2020牛客暑假多校训练营(第二场)

    需要注意的就是 判断角度是否一样需要用 (fabs(x-y)<eps) 这个(eps=1e-10) 这样才能过,如果 (eps=1e-6) 只能过 (85\%) ,如果 (eps=1e-8) 只能过 (90\%)

    #include <bits/stdc++.h>
    #define debug(x) printf("debug:%s=%d
    ",#x,x);
    //#define debug(x) cout << #x << ": " << x << endl
    using namespace std;
    const int maxn = 2e3+10;
    const double eps = 1e-10;
    typedef long long ll;
    ll x[maxn],y[maxn];
    double ans[maxn];
     
    double getLen(int i,int j){
        double res = (x[j]-x[i])*(x[j]-x[i])+(y[j]-y[i])*(y[j]-y[i]);
        return sqrt(res);
    }
     
    double getCos(int i,int j,int k){
        double c = getLen(i,j);
        double a = getLen(j,k);
        double b = getLen(i,k);
        return acos((a*a+b*b-c*c)/(2*a*b));
    }
     
    int main(){
        int n;
        scanf("%d",&n);
        for(int i=1;i<=n;i++) scanf("%lld%lld",&x[i],&y[i]);
        x[0]=y[0]=0;
        int sum = 1;
        for(int i=1;i<=n;i++) {
            int now = 0;
            for (int j = 1; j <= n; j++) {
                ll num = x[i] * y[j] - x[j] * y[i];
                if (num >= 0) continue;
                double res = getCos(0, i, j);
    //            printf("i=%d j=%d res=%f
    ",i,j,res);
                ans[++now] = res;
            }
            int cnt = 2;
            if (now) {
                sum = max(sum, 2);
                sort(ans + 1, ans + 1 + now);
                for (int j = 2; j <= now; j++) {
                    if (ans[j] - ans[j - 1] < eps) {
                        cnt++, sum = max(sum, cnt);
                    } else cnt = 2;
                }
            }
        }
        printf("%d
    ",sum);
    }
     
    /*
    5
    3 3
    8 6
    8 8
    1 3
    4 2
     
     
     
    */
    
  • 相关阅读:
    docker备忘录
    GUAVA-RateLimit
    JDK各版本发展史
    C++ 基础备忘录
    浅谈MES
    MES在流程和离散制造企业的15个差别!
    mysql连接oracle补偿方案—odbc驱动
    WinForm控件Chart的图表类型
    C#的异常处理机制(try...catch...finally)
    oracle 横向列变为纵向列
  • 原文地址:https://www.cnblogs.com/EchoZQN/p/13305171.html
Copyright © 2011-2022 走看看