【动态规划】打砖块

打 砖 块 打砖块

Description

KXT是一个很无聊的小朋友,一天到晚都在打坐…
一天,被他发现了一个比打坐更无聊的事情——打砖块。很多块砖分布在一个m×m的矩阵中,他可以消掉以他为左上角顶点的一个n×n的矩阵里的所有砖块。
喜欢偷懒的他请来了你帮他计算可以消掉最多的砖块数(只能消一次)。

Input

第一行:用空格隔开的三个整数n、m、k。
接下来k行,每行2个用空格隔开的整数Xi、Yi,表示第i块砖在Xi行、Yi列的位置。

Output

为可以消掉最多的砖块数。

Sample Input

5 10 11
2 1
4 6
4 9
3 9
9 7
9 9
7 9
8 10
8 8
8 6
10 2

Sample Output

6

Hint

【样例解释】   [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-m0D5u8xZ-1625489129772)(http://10.156.17.250/JudgeOnline/image/2215.jpg)]

站在第4行、6列的位置,可以消除6个方块。

【数据范围】

n<=m; k<=m*m
60%:n<=70; m<=70; k<=4900
100%:n<=1000; m<=1000; k<=1000000;

解题思路

枚举正方形中左上角的点,因为不存在负数,右下角的点就是s[i+n-1][j+n-1],在按照状态转移方程做出此题

s [ i ] [ j ] = s [ i − 1 ] [ j ] + s [ i ] [ j − 1 ] − s [ i − 1 ] [ j − 1 ] + s [ i ] [ j ] s[i][j]=s[i-1][j]+s[i][j-1]-s[i-1][j-1]+s[i][j] s[i][j]=s[

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值