Description

一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色。

你有一个a*b的印章,有些格子是凸起(会沾上墨水)的。你需要判断能否用这个印章印出纸上的图案。印的过程中需要满足以下要求:

(1)印章不可以旋转。

(2)不能把墨水印到纸外面。

(3)纸上的同一个格子不可以印多次。

Input

第一行一个整数q(1<=q<=10),表示测试点数量。

接下来q个测试点,每个测试点中:

第一行包含4个整数n,m,a,b(1<=n,m,a,b<=1000)。

接下来n行,每行m个字符,描述纸上的图案。'.'表示留白,'x'表示需要染黑。

接下来a行,每行b个字符,描述印章。'.'表示不沾墨水,'x'表示沾墨水。

Output

对于每个测试点,输出TAK(是)或NIE(否)。

Sample Input

2
3 4 4 2
xx..
.xx.
xx..
x.
.x
x.
..
2 2 2 2
xx
xx
.x
x.

Sample Output

TAK
NIE

HINT

Source

鸣谢Jcvb

思路:由于左上的点肯定是对应的 因此每次寻找左上的点 把印章里的点覆盖掉 模拟一边即可

#include<cstdio>

#include<string.h>

#include<algorithm>

#define maxn 1009

using namespace std;

struct T

{int x;int y;}z[maxn*maxn];

int h,a,b,c,d,ma[maxn][maxn],t;

char ch[maxn];

int main(){

scanf("%d",&t);

while(t--){

scanf("%d%d%d%d",&a,&b,&c,&d);

for(int i=1;i<=a;i++){

scanf("%s",ch+1);

for(int j=1;j<=b;j++)if(ch[j]=='.')ma[i][j]=1;else ma[i][j]=2;

}

int flag=h=0;

for(int i=1;i<=c;i++){

scanf("%s",ch+1);

for(int j=1;j<=d;j++)

if(ch[j]=='x'&& flag==0)flag=1,z[++h].x=i,z[h].y=j;

else if(ch[j]=='x')z[++h].x=i-z[1].x,z[h].y=j-z[1].y;

}flag=0;

for(int i=1;i<=a;i++){

for(int j=1;j<=b;j++){

if(ma[i][j]==2){ma[i][j]=1;

for(int k=2;k<=h;k++){

if(x>=1&&y>=1&&ma[i+z[k].x][j+z[k].y]==2)ma[i+z[k].x][j+z[k].y]=1;

else{flag=1;break;}

}if(flag==1)break;

}

}if(flag==1)break;

}

if(flag==0)printf("TAK\n");else printf("NIE\n");

for(int i=1;i<=a;i++)for(int j=1;j<=b;j++)ma[i][j]=0;

}

return 0;

}

最新文章

  1. 微软CMS项目 Orchard 所用到的开源项目
  2. IO复用三种方式
  3. Java 名词
  4. [技术分享] .NET下 , 上传图片的处理方式 , 贴上代码 .
  5. HDU 5514 Frogs (容斥原理+因子分解)
  6. SQL Server 中的游标(cursor)
  7. Oracle数据库——体系结构
  8. 分析和解析PHP代码的7大工具
  9. Windows内存管理和linux内存管理
  10. ssh 内在溢出
  11. javascript事件学习笔记
  12. ubuntukylin(64bit)安装推荐
  13. 原码、反码、补码和移码事实上非常easy
  14. Win7 补丁装不上怎么办?
  15. [hihoCoder]无间道之并查集
  16. TCP粘包和拆包问题
  17. ubuntu更改用户密码
  18. XCube和X组件的入门级使用教程
  19. Java:Copy-On-Write容器
  20. 20155323刘威良《网络对抗》Exp7 网络欺诈防范

热门文章

  1. vs2010调试sql2008存储过程
  2. 忘记Centos7.2下root用户密码后的处理方式
  3. PHP高端课程
  4. kvc to nsdata
  5. 一个典型的flex布局,兼容性比较好
  6. Linux平台搭建roboframework
  7. PAT (Basic Level) Practise (中文)-1028. 人口普查(20)
  8. Luogu P1782 旅行商的背包
  9. tkinter学习-文本框
  10. SqlServer 2014该日志未截断,因为其开始处的记录是挂起的复制操作或变更数据捕获