洛谷 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[ ...
随机推荐
- 英语音乐---三、Cry on my shoulder
英语音乐---三.Cry on my shoulder 一.总结 一句话总结:Cry on my shoulder 在我的肩膀上哭泣 1.If the hero never comes to you. ...
- kibana 5.5 源码编译踩坑记录
由于项目需要定制开发kibana,因此需要编译kibana,在开发环境下运行. 注意:必须下载kibana 5.5的源码才能正常编译,下载release或者snapshot版本是不行的,运行npm ...
- springboot Ehcache缓存配置
例牌的导包 <!-- 包含支持UI模版(Velocity,FreeMarker,JasperReports), 邮件服务, 脚本服务(JRuby), 缓存Cache(EHCache), 任务计划 ...
- rails 开发随手记 9
ruby 根据名称确定类Object.const_get 一个简单的应用,在header中的,个人信息链应该链接到对应的用户类型的页面上. <%= link_to "个人信息" ...
- [ xml ] [ log4j2 ] No grammar constraints (DTD or XML Schema) referenced in the document.
<!DOCTYPE xml> http://rx1226.pixnet.net/blog/post/321584550
- vue单页面前端做非空校验
form表单 确定按钮 js部分 确定按钮的方法
- [POI2012]HUR-Warehouse Store(贪心,堆)
题意 n天.第i天上午会进货Ai件商品,中午的时候会有顾客需要购买Bi件商品,可以选择满足顾客的要求,或是无视掉他. 如果要满足顾客的需求,就必须要有足够的库存.问最多能够满足多少个顾客的需求. (n ...
- cal---显示日历
cal命令用于显示当前日历,或者指定日期的日历. 语法 cal(选项)(参数) 选项 -l:显示单月输出: -3:显示临近三个月的日历: -s:将星期日作为月的第一天: -m:将星期一作为月的第一天: ...
- hdu 6363 bookshelf
题解讲的很清楚了,直接看代码就懂了 题解:http://bestcoder.hdu.edu.cn/blog/2018-multi-university-training-contest-6-solut ...
- Python学习笔记(5)--数据结构之字典dict
字典(dict) 定义:键值对集合 初始化:{}, {'1' : 'abc', '2' : 'def'} 1.增加:单个数据直接赋值 update(dict2) ---把dict2的元素加入到dic ...