一.题目
题目描述
仪式的场地可以描述为 n × m 的方格图,其中有些方格需要用弹幕击中才能激活。
小苗的符卡弹幕范围为 a × b,但并非所有 a × b 个格子都会被弹幕击中。小苗将具体给出这 a × b 个格子中哪些格子会被击中。
小苗将释放若干次符卡,每次释放符卡都会选定一个 a × b 的区域并发射弹幕。她想要所有需要激活的方格都被恰好击中一次,且其他不需要激活的格子(包括 n × m 范围以外的格子)不被击中。需要注意选择的 a × b 个格子不一定完全包含于 n × m 范围内,只要没有弹幕打在 n × m 以外即可。
小苗现在急着出门揍人,所以她希望你能帮忙判断,若给定场地信息与符卡信息,是否可以满足上述要求。
输入格式
第一行一个正整数 T,表示数据组数。接下来 T 组数据,对于每组数据:
第一行包含四个正整数 n, m, a, b。
接下来 n 行,每行 m 个字符,描述场地信息。’.’ 表示不需要激活,‘x’ 表示需要激活。
接下来 a 行,每行 b 个字符,描述符卡信息。’.’ 表示没有弹幕攻击,‘x’ 表示有弹幕攻击。
输出格式
对于每组数据:
如果答案为是,则输出 Yes;否则输出 No(请注意区分大小写)。
样例
样例输入
2
3 4 4 2
xx…
.xx.
xx…
x.
.x
x.
…
2 2 2 2
xx
xx
.x
x.
样例输出
Yes
No
数据范围与提示
对于所有测试点,满足 T ≤ 5 , m a x ( n , m , a , b ) ≤ 1000 T ≤ 5, max (n, m, a, b) ≤ 1000 T≤5,max(n,m,a,b)≤1000。
二.题解
这道题目很暴力,也很容易算错时间复杂度,考试的时候想得太复杂了。
其实就是先将矩阵B给离散下来,把每个x的点存下来,然后从上到下、从左到右依次遍历A矩阵,每次找到其左上角的第一个x,用B矩阵的左上角的x去覆盖,若无法覆盖就没有办法了,因为A上每个x点必须被覆盖一次,A左上角的x只能以B矩阵左上角的x去覆盖。其实就是一个暴力!!!
时间复杂度看似 O ( n 4 ) O(n^4) O(n4)实则遍历 n 2 n^2