南邮NOJ上机系统#PROB1018华强种瓜

华强种瓜

描述:
华强买到了不保熟的瓜,他很生气,遂决定……

自己种瓜!
第二天,华强承包了一大片瓜田,他买来了 n 2 n^2 n2 个保熟的西瓜种子,并且严格按照一个 n×n 米间距的网格进行种植。为了方便华强记忆,这个网格的坐标从 1 开始编号,到 n 结束。

为了让瓜保熟,他又买来了 k 个洒水器,洒水器工作半径为 r 米,安装在在网格中的某些种子的正上方。

安装完这些洒水器后,华强很想知道现在他的瓜里面有多少能够被撒到水。

输入:
输入共包含 n+k 行。

第一行包含 3 个整数 n、k 和 r,分别表示网格边距、洒水器数量和洒水器工作半径,题目保证 1 ≤ n , k ≤ 200 1≤n,k≤200 1n,k200

接下来 k 行,每行两个整数 x 和 y,表示每个洒水器在网格中的坐标 ( x , y ) (x,y) (x,y)

输出:
一行一个整数,表示被洒水器覆盖到的西瓜总数。

样例输入:
5 2 1
3 3
4 2
样例输出:
8
注释:
对于第一组样例, ( 3 , 3 ) (3,3) (3,3) 上的洒水器工作半径可以覆盖到 ( 3 , 3 ) ( 4 , 3 ) ( 2 , 3 ) ( 3 , 2 ) ( 3 , 4 ) (3,3) (4,3) (2,3) (3,2) (3,4) (3,3)(4,3)(2,3)(3,2)(3,4) 的瓜。而 ( 4 , 2 ) (4,2) (4,2) 上的洒水器可以覆盖到 ( 4 , 2 ) ( 5 , 2 ) ( 3 , 2 ) ( 4 , 1 ) ( 4 , 3 ) (4,2)(5,2) (3,2) (4,1) (4,3) (4,2)(5,2)(3,2)(4,1)(4,3) 的瓜。去重后,共有 8 个瓜被覆盖到。

C++代码实现

#include<iostream>

using namespace std;

int main(){
    int n,k,r;
    cin>>n>>k>>r;
    int xigua[n][n];
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            xigua[i][j]=0;
    
    int x,y;
    for(int i=0;i<k;i++){
        cin>>x>>y;
        for(int j=0;j<n;j++){
            for(int k=0;k<n;k++){
                int distance=(x-1-j)*(x-1-j)+(y-1-k)*(y-1-k);
                if(distance<=r*r)
                    xigua[j][k]=1;
            }
        }
    }
    int result=0;
    for(int i=0;i<n;i++)
        for(int j=0;j<n;j++)
            result+=xigua[i][j];
    cout<<result;
    
    cout<<endl;
    for(int i=0;i<n;i++){
        for(int j=0;j<n;j++)
            cout<<xigua[i][j]<<" ";
        cout<<endl;
    }
}
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值