大二算法期末复习-排序-快乐的蠕虫

一道算法题目,求解在有石头的网格中蠕虫能以何种方式躺下睡觉的个数。通过处理石头的位置,使用双重循环或排序方法计算符合条件的空格数量。
摘要由CSDN通过智能技术生成

快乐的蠕虫

Time Limit: 1000/1000MS (C++/Others) Memory Limit: 65536/65536KB (C++/Others)

Statistic

Problem Description

有一只快乐的蠕虫居住在一个m×n大小的网格中。在网格的某些位置放置了k块石头。网格中的每个位置要么是空的,要么放置了一块石头。当蠕虫睡觉时,它在水平方向或垂直方向上躺着,把身体尽可能伸展开来。蠕虫的身躯既不能进入到放有石块的方格中,也不能伸出网格外。而且蠕虫的长度不会短于2个方格的大小。
本题的任务是给定网格,要计算蠕虫可以在多少个不同的位置躺下睡觉。

Input

输入文件的第1行是一个整数t,1<=t<=11,表示测试数据的个数。每个测试数据的第1行为3个整数:m,n和k(0<=m,n,k<=200000),接下来有k行,每行为2个整数,描述了一块石头的位置(行和列,最左上角位置为(1,1))。

Output

对每个测试数据,输出占一行,为一个整数,表示蠕虫可以躺着睡觉的不同位置的数目。

Sample Input

1
5 5 6
1 5
2 3
2 4
4 2 
4 3
5 1

Sample Output

  9

这道题可以将石头全部储存在二维数组中,并补充边界,使用双重循环遍历数组,

对同一行和同一列(两次循环)直线距离>2的空间

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值