题目大意是有一个 n*n 的矩阵,每个格子有两种状态:on 和 off 。每一次操作会把所有在 on 状态的格子的四周的格子(上下左右)都变为 on 。现在矩阵里的只有一个在(x, y)格子处于 on, 其他的都是 off ,问经过几次操作 on 的格子数会不小于 c ?
样例输入:
9 3 8 10
样例输出:
2
图:
有两种方法
一:暴力做法
从图中可以看出,每次增加的格子数是红色的边上的格子数。因此每次算出四条边上的格子数,处理掉重复的和超出边界的,不断的累加直到总数大于题目要去的 c就行。
二:二分做法
二分枚举出红色部分格子的数量,然后根据边际和格子的数量,算出橙色区域应有的格子数。最后即可二分出答案。具体的计算方法就不写了,锻炼思考能力。