做视频网站 带宽多少才合适,简单网站制作成品,贵州遵义企业公司网站建设,非企户百度推广打砖块打砖块打砖块
Description
KXT是一个很无聊的小朋友#xff0c;一天到晚都在打坐…
一天#xff0c;被他发现了一个比打坐更无聊的事情——打砖块。很多块砖分布在一个mm的矩阵中#xff0c;他可以消掉以他为左上角顶点的一个nn的矩阵里的所有砖块。
喜欢偷懒的他…打砖块打砖块打砖块
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个方块。
【数据范围】
nm; km*m
60%n70; m70; k4900
100%n1000; m1000; k1000000;
解题思路
枚举正方形中左上角的点因为不存在负数右下角的点就是s[in-1][jn-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[i−1][j]s[i][j−1]−s[i−1][j−1]s[i][j] ansmax(ans,s[in−1][jn−1]−s[in−1][j−1]−s[i−1][jn−1]s[i−1][j−1])ansmax(ans,s[in-1][jn-1]-s[in-1][j-1]-s[i-1][jn-1]s[i-1][j-1])ansmax(ans,s[in−1][jn−1]−s[in−1][j−1]−s[i−1][jn−1]s[i−1][j−1])
#includecstdio
#includeiostream
using namespace std;
int n,m,k,ans,x,y,s[1003][1003];
int main()
{scanf(%d%d%d,n,m,k);for (int i1;ik;i){scanf(%d%d,x,y);s[x][y];}for (int i1;im;i)for (int j1;jm;j)s[i][j]s[i-1][j]s[i][j-1]-s[i-1][j-1]s[i][j];//求出前缀和for (int i1;im-n1;i)for (int j1;jm-n1;j)ansmax(ans,s[in-1][jn-1]-s[in-1][j-1]-s[i-1][jn-1]s[i-1][j-1]);//计算当前面积printf(%d,ans);
}