洛谷 P3585 [POI2015]PIE
题目描述
一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色。你有一个a*b的印章,有些格子是凸起(会沾上墨水)的。你需要判断能否用这个印章印出纸上的图案。印的过程中需要满足以下要求:(1)印章不可以旋转。(2)不能把墨水印到纸外面。(3)纸上的同一个格子不可以印多次。
输入输出格式
输入格式:
第一行一个整数q(1<=q<=10),表示测试点数量。接下来q个测试点,每个测试点中:第一行包含4个整数n,m,a,b(1<=n,m,a,b<=1000)。接下来n行,每行m个字符,描述纸上的图案。'.'表示留白,'x'表示需要染黑。接下来a行,每行b个字符,描述印章。'.'表示不沾墨水,'x'表示沾墨水。
输出格式:
对于每个测试点,输出TAK(是)或NIE(否)。
输入输出样例
2
3 4 4 2
xx..
.xx.
xx..
x.
.x
x.
..
2 2 2 2
xx
xx
.x
x.
TAK
NIE
说明
一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色。
你有一个a*b的印章,有些格子是凸起(会沾上墨水)的。你需要判断能否用这个印章印出纸上的图案。印的过程中需要满足以下要求:
(1)印章不可以旋转。
(2)不能把墨水印到纸外面。
(3)纸上的同一个格子不可以印多次。
思路:模拟。
#include<cstdio>
#include<iostream>
#include<cstring>
using namespace std;
int tx,ty,num,n,m,a,b,cou,top;
int map[][],gzx[],gzy[],yzx[],yzy[];
char ch[];
bool flag;
bool judge(int x,int y) {
for(int i=;i<=cou;i++){
tx=x+yzx[i];ty=y+yzy[i];
if(tx>n||ty>m||!tx||!ty) return ;
if(!map[tx][ty]) return ;
else map[tx][ty]=;
}
return ;
}
int main(){
scanf("%d",&num);
while(num--){
memset(map,,sizeof(map));
scanf("%d%d%d%d",&n,&m,&a,&b);
top=cou=;
for(int i=;i<=n;i++){
scanf("%s",ch+);
for(int j=;j<=m;j++)
if(ch[j]=='x'){
top++;
gzx[top]=i;
gzy[top]=j;
map[i][j]=top;
}
}
for(int i=;i<=a;i++){
scanf("%s",ch+);
for(int j=;j<=b;j++)
if(ch[j]=='x'){
if(!cou) tx=i,ty=j;
cou++;
yzx[cou]=i-tx;
yzy[cou]=j-ty;
}
}
flag=;
for(int i=;i<=top;i++)
if(map[gzx[i]][gzy[i]])
if(!judge(gzx[i],gzy[i])){
puts("NIE");
flag=;break;
}
if(!flag)
puts("TAK");
}
return ;
}
洛谷 P3585 [POI2015]PIE的更多相关文章
- 洛谷P3585 [POI2015]PIE
传送门 题目大意:有个n*m的格子图,要求'x'点要被染成黑色 有个a*b的印章,'x'是可以染色的印章上的点. 要求用印章去染色格子 (1)印章不可以旋转. (2)不能把墨水印到纸外面. (3)纸上 ...
- 洛谷P3582 [POI2015]KIN
题目描述 共有\(m\)部电影,编号为\(1--m\),第\(i\)部电影的好看值为\(w[i]\).在\(n\)天之中(从\(1~n\)编号)每天会放映一部电影,第\(i\)天放映的是第\(f[i] ...
- BZOJ 4385 洛谷3594 POI2015 WIL-Wilcze doły
[题解] 手残写错调了好久QAQ...... 洛谷的数据似乎比较水.. n个正整数!!这很重要 这道题是个类似two pointer的思想,外加一个单调队列维护当前区间内长度为d的子序列中元素之和的最 ...
- 洛谷 P3586 [POI2015]LOG
P3586 [POI2015]LOG 题目描述 维护一个长度为n的序列,一开始都是0,支持以下两种操作:1.U k a 将序列中第k个数修改为a.2.Z c s 在这个序列上,每次选出c个正数,并将它 ...
- 洛谷P3588 - [POI2015]Pustynia
Portal Description 给定一个长度为\(n(n\leq10^5)\)的正整数序列\(\{a_n\}\),每个数都在\([1,10^9]\)范围内,告诉你其中\(s\)个数,并给出\(m ...
- 洛谷P3588 [POI2015]PUS
题面 sol:说了是线段树优化建图的模板... 就是把一整个区间的点连到一个点上,然后用那个点来连需要连一整个区间的点就可以了,就把边的条数优化成n*log(n)了 #include <queu ...
- 洛谷P3586 [POI2015]LOG(贪心 权值线段树)
题意 题目链接 Sol 显然整个序列的形态对询问没什么影响 设权值\(>=s\)的有\(k\)个. 我们可以让这些数每次都被选择 那么剩下的数,假设值为\(a_i\)次,则可以\(a_i\)次被 ...
- 洛谷P3588 [POI2015]PUS(线段树优化建图)
题面 传送门 题解 先考虑暴力怎么做,我们把所有\(r-l+1-k\)中的点向\(x\)连有向边,表示\(x\)必须比它们大,那么如果这张图有环显然就无解了,否则的话我们跑一个多源最短路,每个点的\( ...
- BZOJ 3747 洛谷 3582 [POI2015]Kinoman
[题解] 扫描线+线段树. 我们记第i部电影上次出现的位置是$pre[i]$,我们从$1$到$n$扫描,每次区间$(pre[i],i]$加上第i部电影的贡献$w[f[i]]$,区间$[pre[pre[ ...
随机推荐
- 本地代码中使用Java对象
通过使用合适的JNI函数,你可以创建Java对象,get.set 静态(static)和 实例(instance)的域,调用静态(static)和实例(instance)函数.JNI通过ID识别域和方 ...
- 【转】webshell检测——使用auditd进行system调用审计
本文档将介绍:如何通过Linux审计系统auditd监测WebShell执行系统命令的行为. 测试环境:CentOS7.0_x64 auditd简介 Linux审计系统提供了一种跟踪系统上与安全相关的 ...
- jzoj4196 二分图计数 解题报告(容斥原理)
Description
- POJ 2110 二分+暴搜
题意: 给你一个矩阵 ,你能往各个方向走(不走出去就行),每次只能上下左右走一格,问路径上的点权最大值和最小值的差最小是多少. 思路: 首先 二分最后的答案, 暴力枚举当前的区间是啥. DFS 就OK ...
- POJ 3280 DP
题意: 思路: DP f[i][j]表示把i到j变成回文串的最少代价 f[start][end]=f[start+1][end]+min(node[a[start]].del,node[a[start ...
- 实时监控Cat之旅~配置Cat集群需要注意的问题
在配置cat集群时,有一些设置是我们应该注意的,从它的部署文档中我们可以看到相关信息,但说的还不够明确和重要,大叔今天总结一下Cat集群配置的注意事项 1 服务端datasources.xml用来设置 ...
- feign client传递对象
http://bbs.springcloud.cn/d/134-feign-client server端申明 @RestController public class HelloController ...
- java9新特性-1-概述
经过4次跳票,历经曲折的java 9 终于终于在2017年9月21日发布. 2.哪些人适合看这套视频? 已经熟悉或熟练运用java 8 及 之前 java 版本的开发人员.科研人员.学生及 ...
- Hadoop-CDH源码编译
* Hadoop-CDH源码编译 这一节我们主要讲解一下根据CDH源码包手动编译的过程,至于为什么要使用CDH,前几节已经说明,那为什么又要自己手动编译,因为CDH的5.3.6对应的Hadoop2.5 ...
- The IDL compiler
The IDL compiler or bindings generator transcompiles Web IDL to C++ code, specifically bindings betw ...