zoukankan      html  css  js  c++  java
  • 2018 ACM 国际大学生程序设计竞赛上海大都会赛重现赛 A Fruit Ninja

    传送门

    题解:给你一堆点问你能不能找出一条直线,使其穿过的点大于n*x。

    题解:想起某道CF题目,给你一堆点问你能不能找出两条直线使其穿过所有的点。当时就是在一定时限内随机找了两个点,再枚举每个点是否满足,如果超过该时限仍然不满足则直接返回no。这题也是一样的做法,直接随机两个点,再枚举过去。因为x为0.1到0.9,所以如果所给数据满足条件,那么它有极大概率能够跑出结果。4发只有一次超时。如果你随机不够就会wa。。。我之前只随机了100次,两法都wa了

    #include<bits/stdc++.h>
    //CLOCKS_PER_SEC
    #define se second
    #define fi first
    #define ll long long
    #define Pii pair<int,int>
    #define Pli pair<ll,int>
    #define ull unsigned long long
    #define pb push_back
    #define fio ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
    const double Pi=3.14159265;
    const int N=1e4+10;
    const ull base=163;
    const int INF=0x3f3f3f3f;
    const ll mod=1e9+7;
    using namespace std;
    Pii p[N];
    int main(){
        int T;scanf("%d",&T);
        while(T--){
            int n;double X;scanf("%d%lf",&n,&X);
            for(int i=1;i<=n;i++){
                scanf("%d%d",&p[i].fi,&p[i].se);
            }
            if(n<=2){
                puts("Yes
    ");
                continue;
            }
            int m=ceil(n*X);
            int flag=0;
            for(int pp=0;pp<1000;pp++){
                int x=rand()%n+1,y=rand()%n+1;
                while(y==x)y=rand()%n+1;
                double a=1.0*(p[y].se-p[x].se)/(p[y].fi-p[x].fi);
               // cout<<"a. "<<a<<endl;
                int s=2;
                for(int j=1;j<=n;j++){
                    if(j==x||j==y)continue;
                    double b=1.0*(p[j].se-p[x].se)/(p[j].fi-p[x].fi);
                   // cout<<b<<endl;
                    if(b==a)s++;
                    if(s>=m){
                        flag=1;
                        break;
                    }
                }
                if(flag==1)break;
            }
            if(flag)puts("Yes");
            else puts("No");
        }
        return 0;
    }
  • 相关阅读:
    Python批量爬取唯美类图片
    查找Windows启动程序
    在Windows10中进行蓝屏排查
    在Windows 10中应该记住的完整的多指触摸板手势
    通过命令行工具远程注销用户
    Windows 7,8.1和10中的隐藏退出资源管理器选项
    找出正在使用的全局热键
    windows10中创建环境变量
    mysql高级(锁机制)
    mysql高级(查询截取分析)
  • 原文地址:https://www.cnblogs.com/Mrleon/p/9427061.html
Copyright © 2011-2022 走看看