codeJan与恐怖分子

题目描述

把Noland抽象成一个n∗m的方格矩阵,行从上到下为1∼n,列从左到右为1∼m。codeJan处在坐标为(R,C)方格上,codeJan可以观察到他所在的行和列的治安情况。有一个恐怖分子想要毁掉Noland,又不被codeJan观察到。恐怖分子手中有无穷多个可以每次炸毁边长为K∗K的区域。方格矩阵的每个方格的边长为1。炸毁的区域不能超过Noland(方格矩阵)的范围,同一块区域可以炸毁多次。恐怖分子至少需要多少颗炸弹才能炸毁除了codeJan所在的行列的其余所有区域?或者无法完成这个任务?

输入描述:

第一行是一个 T(T ≤ 1000) 代表测试组数。接下来 T 行,每行包含 5 个正整数 n, m,R, C,K,含义如上。

输出描述:

一共输出 T 行,每行输出一个数字。如果可以完成任务,输出需要的最少的炸弹数量;否则无法完成任务,输出 -1。
#include <iostream>
#include <cstdio>
using namespace std;
 
int main()
{
    int n,m,r,c,k;
    int t;
    cin>>t;
    while(t--)
    {
        long long h1,h2,h3,h4,s1,s2,s3,s4;
        scanf("%d%d%d%d%d",&n,&m,&r,&c,&k);
        h1=h2=r-1;
        h3=h4=n-r;
        s1=s3=c-1;
        s2=s4=m-c;
        if(((s1<k||h1<k)&&s1*h1)||((s2<k||h2<k)&&s2*h2)||((s3<k||h3<k)&&s3*h3)||((s4<k||h4<k)&&s4*h4)){printf("-1\n");continue;}
        long long sum=0;
        if(h1%k==0)h1=h1/k;
        else h1=h1/k+1;
        if(s1%k==0)s1=s1/k;
        else s1=s1/k+1;
        if(h2%k==0)h2=h2/k;
        else h2=h2/k+1;
        if(s2%k==0)s2=s2/k;
        else s2=s2/k+1;
        if(h3%k==0)h3=h3/k;
        else h3=h3/k+1;
        if(s3%k==0)s3=s3/k;
        else s3=s3/k+1;
        if(h4%k==0)h4=h4/k;
        else h4=h4/k+1;
        if(s4%k==0)s4=s4/k;
        else s4=s4/k+1;
        printf("%lld\n",h1*s1+h2*s2+h3*s3+h4*s4);
    }
    return 0;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值