题目背景
给你一个 01 矩阵,我们希望你从中找到由连续的 1 组成的「字母 T」。
题目描述
「字母 T」由一横和一竖组成,竖一定在横的下方(您可以借助英文字母 T
辅助理解)。
在本题中,我们定义「横」为组成「字母 T」的水平线段,「竖」为组成「字母 T」的竖直线段。
注意「横」与「竖」的公共部分同时计入横长和竖长。
合法的「字母 T」的「横」长必须为奇数且「竖」与「横」交于「横」的中点,「横」长最小为 3 ,「竖」长最小为 2。
如:
0111100101只含有一个合法的「字母 T」(即标红部分)。
现在给你一个 n×m 的 01 矩阵,请你求出在这个矩阵中合法的「字母 T」中,一共有多少个满足以下条件的「字母 T」。
设某个合法的「字母 T」的「横」长为 w,「竖」长为 h,有:
- w≥a
- h≥b
- w×h≥s
- w+h≥x
两个「字母 T」不相同即两个「字母 T」的 「横」长 或 「竖」长 或 最左上角的坐标 不同。
输入格式
第一行,两个整数 n,m,表示给定的 01 矩阵共有 n 行 m 列。
第二行,四个整数 a,b,s,x。
接下来 n 行,每行 m 个数,只可能是 0 / 1,为给定的矩阵。
输出格式
输出一个整数,表示有多少个满足条件且合法的「字母 T」。
提示
【样例解释 #1】
11111111110111001110111111111101110011101111111111第 1 个第 2 个除了以上两个「字母 T」,没有其他满足条件且合法的「字母 T」,故输出 2。
【数据范围】
| 测试点编号 | n,m≤ | a,b≤ | s≤ | x≤ |
| :----------: | :----------: | :----------: | :----------: | :----------: |
| 1∼4 | 100 | 100 |104|200|
| 5∼8 | 500 | 500 |2.5×105|104|
| 9,10 | 3×103 | 0 |0|0|
| 11∼13 | 3×103 |3×103|0|6×103|
| 14∼16 | 3×103 |3×103|9×106|0|
| 17∼20 | 3×103 |3×103|9×106|6×103|
对于 100% 的数据,满足 1≤n,m≤3×103,0≤a,b≤3×103,0≤s≤9×106, 0≤x≤6×103。