• Moon Game fzu 找n个点中 有多少个 凸多边形


    以后绝对要记得 标记的数组要用 bool型!!

    之前用int型的超时 而改成bool型的居然就过了  

    判断一个图形是否是凸多边形 只要看里面是不是有一个角是>180度的就行了

    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    using namespace std;
    double x[20000],y[20000];
    bool vis[40][40][40][40];
    
    int is(int i,int j,int k)
    {
        double ax=x[j]-x[i];
        double ay=y[j]-y[i];
        double bx=x[k]-x[j];
        double by=y[k]-y[j];
        double cross;
        cross=ax*by-bx*ay;
        if(cross+0.000001<0)
            return 1;
        return 0;
    }
    
    int ok(int i,int j,int k,int w)
    {
        if(i==j||i==k||i==w||j==k||j==w||k==w)
            return 1;
       if(is(i,j,k)||is(j,k,w)||is(k,w,i)||is(w,i,j))
            return 1;
        return 0;
    }
    
    int main()
    {
        int i,j,k,w,n,m,ppp=1,t;
        int num;
        scanf("%d",&t);
        while(t--)
        {
            num=0;
            memset(vis,false,sizeof(vis));
            scanf("%d",&n);
            for(i=0;i<n;i++)
                scanf("%lf%lf",&x[i],&y[i]);
            for(i=0;i<n;i++)
    
                for(j=0;j<n;j++)if(i!=j)
    
                   for(k=0;k<n;k++)if(k!=j&&k!=i)
    
                       for(w=0;w<n;w++)if(w!=k&&w!=i&&w!=j)
                       {
                           if(!vis[i][j][k][w]&&!ok(i,j,k,w))
                           {
                               vis[i][j][k][w]=true;
                               vis[i][j][w][k]=true;
                                vis[i][k][j][w]=true;
                                 vis[i][k][w][j]=true;
                                  vis[i][w][j][k]=true;
                                   vis[i][w][k][j]=true;
    
                                  vis[j][i][k][w]=vis[j][i][w][k]=vis[j][k][i][w]=vis[j][k][w][i]=vis[j][w][i][k]=vis[j][w][k][i]=true;
    
                                   vis[k][i][j][w]=vis[k][i][w][j]=vis[k][j][i][k]=vis[k][j][k][i]=vis[k][w][i][j]=vis[k][w][j][i]=true;
    
                                    vis[w][i][j][k]=vis[w][i][k][j]=vis[w][j][i][k]=vis[w][j][k][i]=vis[w][k][i][j]=vis[w][k][j][i]=true;
                               num++;
                           }
                       }
            printf("Case %d: %d
    ",ppp++,num);
    
        }
    
        return 0;
    }
  • 相关阅读:
    whoami
    w
    id
    su
    chpasswd
    chage
    password
    scrapy框架中Download Middleware用法
    scrapy框架持久化存储
    scrapy框架中Item Pipeline用法
  • 原文地址:https://www.cnblogs.com/assult/p/3486058.html
Copyright © 2020-2023  润新知