其他分享
首页 > 其他分享> > 组队赛-13

组队赛-13

作者:互联网

G-goblin garden guards

没想到耗时才570ms,被自己感动到,题目里半径最大才100,所以40000比100000小得多,就还是采用了最开始的想法。

#include <iostream>
#include <cstring>
#include <algorithm>
#include <math.h>
using namespace std;
typedef long long ll;
const int N=1e5+10;
int st[10010][10010];
double getdis(int a,int b,int x,int y)
{
    double dis=sqrt(1.0*(a-x)*(a-x)+1.0*(b-y)*(b-y));
    return dis;
}
//struct node
//{
//    int x,y;
//}gl[N];
signed main()
{
    int g;
    cin>>g;
    for (int i=0;i<g;i++)
    {
        int x,y;
        cin>>x>>y;
        st[x][y]++;//地精能在同一位置,所以要计数,而不是开bool
    }
    int m;
    cin>>m;
    int ans=g;
    for (int i=0;i<m;i++)
    {
        int a,b,r;
        cin>>a>>b>>r;
        int num1=max(0,a-r);
        int num2=max(0,b-r);
        int num3=min(10000,a+r);
        int num4=min(10000,b+r);
        for (int j=num1;j<=num3;j++)
        {
            for (int k=num2;k<=num4;k++)
            {
                if (st[j][k]&&getdis(a,b,j,k)<=r)
                {
                    ans-=st[j][k];
                    st[j][k]=0;
                }
            }
        }
    }
    printf("%d\n",ans);
    return 0;
}

 

标签:13,10010,1.0,num1,int,组队,10000,include
来源: https://www.cnblogs.com/Mercury1988/p/16275446.html