• UVALive 6263 The Dragon and the knights --统计,直线分平面


    题意:给n条直线,将一个平面分成很多个部分,再给m个骑士的坐标,在一个部分内只要有一个骑士即可保护该部分,问给出的m个骑士是不是保护了所有部分。

    解法:计算每个骑士与每条直线的位置关系(上面还是下面),用0,1表示,所以每个骑士会有一个01串,最后统计出这n条直线分成的部分数(可能有平行的),然后排序每个骑士的01串,看有多少个处在不同部分的骑士(01串不同的个数),然后比较个数关系,得出答案。

    代码:

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cmath>
    #include <algorithm>
    #include <string>
    #define ll long long
    using namespace std;
    #define N 50007
    
    struct Line
    {
        int A,B,C;
    }line[107];
    
    bool UPLine(Line ka,ll x,ll y)
    {
        ll res = ka.A*x + ka.B*y + ka.C;
        return res > 0;
    }
    
    bool intersection(Line ka,Line kb)
    {
        if(ka.A*kb.B == ka.B*kb.A)
            return false;
        return true;
    }
    
    string ss[N];
    
    int main()
    {
        int t,n,m,i,j;
        int x,y;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%d%d",&n,&m);
            for(i=0;i<n;i++)
                scanf("%d%d%d",&line[i].A,&line[i].B,&line[i].C);
            string tmp = "";
            for(i=0;i<n;i++)
                tmp += "0";
            for(i=0;i<m;i++)
            {
                scanf("%d%d",&x,&y);
                ss[i] = tmp;
                for(j=0;j<n;j++)
                {
                    if(UPLine(line[j],x,y))
                        ss[i][j] = '1';
                }
            }
            int C = n+1;
            for(i=0;i<n;i++)
            {
                for(j=i+1;j<n;j++)
                    if(intersection(line[i],line[j]))
                        C++;
            }
            sort(ss,ss+m);
            int cnt = 1;
            for(i=1;i<m;i++)
            {
                if(ss[i] != ss[i-1])
                    cnt++;
            }
            if(cnt >= C)
                puts("PROTECTED");
            else
                puts("VULNERABLE");
        }
        return 0;
    }
    View Code
  • 相关阅读:
    《谈谈推荐系统中的用户行为序列建模》
    《样本权重对逻辑回归评分卡的影响探讨》
    CLOUD计算产品成本嵌套
    冲突操作列表
    查看临时表空间
    设置SQLServer数据库内存
    BPM与OA的区别
    企业门户建设详解
    CRM/PLM/SCM/MES与ERP的联系与区别
    供应链十大优化方法
  • 原文地址:https://www.cnblogs.com/whatbeg/p/3876489.html
Copyright © 2020-2023  润新知