@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

@solution@

说实话我一开始看到这道题觉得挺难的

纸上的从上到下,从左到右的第一个黑格一定对应着印章上从上到下,从左到右的第一个黑格。

否则你移动印章要么多盖黑格要么少盖黑格

然后就模拟,再找下一个黑格,再模拟。

为了控制时间复杂度,我们将印章上的黑格坐标存下来而不是将整个印章存下来。

这样每次操作必然会消去一个黑格。

@accepted code@

#include<vector>
#include<cstdio>
#include<iostream>
using namespace std;
typedef pair<int, int> pii;
const int MAXN = 1000 + 5;
int read() {
static int x; scanf("%d", &x);
return x;
}
vector<pii>vec;
char pp[MAXN][MAXN], s[MAXN];
void solve() {
vec.clear();
int n = read(), m = read(), a = read(), b = read();
for(int i=1;i<=n;i++)
scanf("%s", pp[i] + 1);
int ox = -1, oy = -1;
for(int i=1;i<=a;i++) {
scanf("%s", s + 1);
for(int j=1;j<=b;j++)
if( s[j] == 'x' ) {
if( ox == -1 )
ox = i, oy = j;
vec.push_back(make_pair(i - ox, j - oy));
}
}
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
if( pp[i][j] == 'x' ) {
for(int k=0;k<vec.size();k++) {
int x = i + vec[k].first;
int y = j + vec[k].second;
if( x < 1 || y < 1 || x > n || y > m ) {
puts("NIE");
return ;
}
if( pp[x][y] == 'x' )
pp[x][y] = '.';
else {
puts("NIE");
return ;
}
}
}
puts("TAK");
}
int main() {
int q = read();
for(int i=1;i<=q;i++)
solve();
}

@details@

我一开始还想着什么图染色。

现在看过来都为当时的自己担忧……

@bzoj - 3750@ [POI2015] Pieczęć的更多相关文章

  1. BZOJ 3750: [POI2015]Pieczęć 【模拟】

    Description 一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色. 你有一个a*b的印章,有些格子是凸起(会沾上墨水)的.你需要判断能否用这个印章印出纸上的图案.印的过程中需要 ...

  2. [POI2015]Pieczęć

    [POI2015]Pieczęć 题目大意: 一张\(n\times m(n,m\le1000)\)的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色. 你有一个\(a\times b(a,b\l ...

  3. bzoj 4386: [POI2015]Wycieczki

    bzoj 4386: [POI2015]Wycieczki 这题什么素质,爆long long就算了,连int128都爆……最后还是用long double卡过的……而且可能是我本身自带大常数吧,T了 ...

  4. BZOJ 4385: [POI2015]Wilcze doły

    4385: [POI2015]Wilcze doły Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 648  Solved: 263[Submit][ ...

  5. BZOJ 4384: [POI2015]Trzy wieże

    4384: [POI2015]Trzy wieże Time Limit: 20 Sec  Memory Limit: 128 MBSubmit: 217  Solved: 61[Submit][St ...

  6. Bzoj 3747: [POI2015]Kinoman 线段树

    3747: [POI2015]Kinoman Time Limit: 60 Sec  Memory Limit: 128 MBSubmit: 553  Solved: 222[Submit][Stat ...

  7. BZOJ 3747 POI2015 Kinoman 段树

    标题效果:有m点,每个点都有一个权值.现在我们有这个m为点的长度n该序列,寻求区间,它仅出现一次在正确的点区间内值和最大 想了很久,甚至神标题,奔说是水的问题--我醉了 枚举左点 对于每个请求留点右键 ...

  8. BZOJ 4380 [POI2015]Myjnie | DP

    链接 BZOJ 4380 题面 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i]. 有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗车店,且会选择这些店中最便宜的一个 ...

  9. BZOJ3750 : [POI2015]Pieczęć

    枚举第一个位置,然后暴力检验. #include<cstdio> #define N 1010 int T,n,m,a,b,x,y,i,j,k,q[N*N][2],cnt;char s[N ...

随机推荐

  1. No module named zope.interface error 的解决

    在 import zope.interface 时,出现错误 No module named zope.interface error根据 http://stackoverflow.com/quest ...

  2. springmvc报404错误No mapping found for HTTP request with URI [/mavenSpringmvc/requesttest] in DispatcherServlet with name 'spring'

    问题404错误的原因有很多种 有这种,后边不带url的 这种一般就是没有进入到controller中 可以在toncat中看到信息 十一月 12, 2018 12:21:25 下午 org.sprin ...

  3. 2019-7-3-WPF-使用-Composition-API-做高性能渲染

    title author date CreateTime categories WPF 使用 Composition API 做高性能渲染 lindexi 2019-07-03 10:30:57 +0 ...

  4. H5C3--拖拽接口的使用和实例

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. rescue grub解决方案

    症状: 开机显示:GRUB loading error:unknow filesystem grub rescue> 原因: 已经发现下面几种操作会导致这种问题: 1,想删除ubuntu,于是直 ...

  6. 前端怎么传一个map给JAVA

    var map = {}; map['key1']=value1; map['key2']=value2; map['key3']=value3; map['key4']=value4; map['k ...

  7. pycharm多行批量缩进和反向缩进快捷键

    在 VS, PYCHARM 中只要 拉选块之后,按下tab键,整个块就会缩进 按下 shift + tab 就会反向缩进

  8. 入职9月,旷视孙剑106分钟讲述CV创业科研的5大区别

    雷锋网按:本文为旷视科技首席科学家孙剑日前在 CCF-ADL上做的题为<如何在大公司和创业公司做好计算机视觉研究>的分享,主要介绍了近期计算机视觉的发展现状,ResNet基本原理和设计,旷 ...

  9. 2017年浙工大迎新赛热身赛 L cayun日常之赏月【易错特判】

    题目描述(https://www.nowcoder.com/acm/contest/51#question) 在cayun星球月亮大小都有一个规律,月亮为每30天一个周期,在这30天的周期里,月亮的大 ...

  10. Lichee ( 四 ) 打包IMAGE

    在<Lichee(三) Android4.0的目标产品文件夹与Lichee的纽带---extract-bsp>中我们分析了extract-bsp的作用和意义.到这里,我们能够開始编译And ...