floj 2265 【lxs Contest #141】航海舰队
首先抠出包围了阵形的最小矩形。
将地图拉伸成一条链,即将第一行、第二行、第三行按顺序连接。阵形也可以用同样的方法处理。
那么问题转化为,给定两个 01 串 S 和 T,问每个 S 中长度为 |T| 的子串是否存在
一个点,两个串对应字符都是 1。
将 T 串翻转,那么就变成了卷积的形式,FFT 计算即可。
在 BFS 求出所有可行的位置之后,对于答案的计算,也是卷积的形式,用 FFT 加速即可。
时间复杂度 O(nm log(nm))