• P3717 [AHOI2017初中组]cover


    题目背景

    以下为不影响题意的简化版题目。

    题目描述

    一个n*n的网格图上有m个探测器,每个探测器有个探测半径r,问这n*n个点中有多少个点能被探测到。

    输入输出格式

    输入格式:

    第一行3个整数n,m,r

    接下来m行,每行两个整数x,y表示第i个探测器的坐标

    输出格式:

    能被探测到的点的个数

    输入输出样例

    输入样例#1:
    5 2 1
    3 3
    4 2
    输出样例#1:
    8

    说明

    1<=n,m<=100

     

    数据太水。

    暴力枚举就好!

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<cmath>
    #include<algorithm>
    #define lli long long int 
    using namespace std;
    void read(int &n)
    {
    	char c='+';int x=0;bool flag=0;
    	while(c<'0'||c>'9')
    	{c=getchar();if(c=='-')flag=1;}
    	while(c>='0'&&c<='9')
    		x=x*10+(c-48),c=getchar();
    	flag==1?n=-x:n=x;
    }	
    int n,m,r;
    struct node
    {
    	int x,y;
    }a[1001];
    int vis[1001][1001];
    int main()
    {	
    	memset(vis,0,sizeof(vis));
    	read(n);read(m);read(r);
    	for(int i=1;i<=m;i++)
    	{
    		read(a[i].x);
    		read(a[i].y);
    	}
    	int ans=0;
    	for(int k=1;k<=m;k++)
    		for(int i=1;i<=n;i++)
    			for(int j=1;j<=n;j++)
    				if((sqrt((i-a[k].x)*(i-a[k].x)+(j-a[k].y)*(j-a[k].y)))<=r)
    					vis[i][j]=1;
    	for(int i=1;i<=n;i++)
    		for(int j=1;j<=n;j++)
    			if(vis[i][j])
    				ans++;
    	printf("%d",ans);
    	return 0;
    }
    

      

  • 相关阅读:
    解决页面报错: GEThttp://localhost:8080/favicon.ico 404 (Not Found)
    vs2019快捷键整理
    js保存图片至本地
    PHP输出方式的区别
    js运算精度问题
    Hadoop相关问题
    2015年10月5日 12:49:07
    Hive数据倾斜
    Hadoop错误日志
    使用maven开发MR
  • 原文地址:https://www.cnblogs.com/zwfymqz/p/7159060.html
Copyright © 2020-2023  润新知