zoukankan      html  css  js  c++  java
  • uvalive 6955 Finding Lines rand()应用

    题目就是问你有没有一条直线可以满足大于等于p%的点在它上面。如果是枚举全部直线的话,会超时。所以用rand函数随机来找直线。

    #include<bits/stdc++.h>
    using namespace std;
    const int N=100000+5;
    
    int x[N],y[N];
    
    int main()
    {
        int n,i,k,flag,cnt,tp,t;
        double p;
        while(~scanf("%d",&n))
        {
            scanf("%lf",&p);
            t=n*p;
            srand(time(0));
            for(i=0;i<n;i++)
                scanf("%d%d",&x[i],&y[i]);
            flag=0;
            if(n<=2) {printf("possible
    ");continue;}
            for(i=0;i<1000;i++)
            {
                cnt=2;
                int u=rand()%n,v;
                while(1)
                {
                    v=rand()%n;
                    if(u!=v) break;
                }
                for(k=0;k<n;k++)
                {
                    if(k==u||k==v) continue;
                    tp=(x[k]-x[u])*(y[v]-y[u])-(x[v]-x[u])*(y[k]-y[u]);
                    if(tp==0) cnt++;
                    if(cnt*100>=t) flag=1;
                    if(flag) break;
                }
                    if(flag) break;
            }
            if(flag) printf("possible
    ");
            else printf("impossible
    ");
        }
        return 0;
    }

    版权声明:本文为博主原创文章,未经博主允许不得转载。http://xiang578.top/

  • 相关阅读:
    min_25筛入门
    [湖南集训]更为厉害/谈笑风生
    [ARC060D] 最良表現
    [CQOI2007]矩形
    [SCOI2009]粉刷匠
    PAT乙级1030
    PAT乙级1028
    PAT乙级1029
    PAT乙级1026
    PAT乙级1027
  • 原文地址:https://www.cnblogs.com/xryz/p/4847812.html
Copyright © 2011-2022 走看看