【题解】\(PIE\) \([POI2015]\) \([P3585]\)

逼自己每天一道模拟题

传送门:\(PIE\) \([POI2015]\) \([P3585]\)

【题目描述】

一张 \(n*m\) 的方格纸,有些格子需要印上墨水,剩下的格子需要保持干净。你有一个 \(a*b\) 的印章,有些格子有墨水的。你需要判断能否用这个印章满足要求。

但印的过程中需要满足以下要求:

\((1)\)印章不可以旋转。

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

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

【输入】

第一行一个整数 \(q\),表示测试点数量。接下来 \(q\) 个测试点,每个测试点中:第一行包含4个整数 \(n,m,a,b\)。接下来 \(n\) 行,每行 \(m\) 个字符,描述纸上的图案。\('.'\) 表示留白,\('x'\) 表示需要染黑。接下来 \(a\) 行,每行 \(b\) 个字符,描述印章。\('.'\) 表示不沾墨水,\('x'\) 表示沾墨水。

【输出】

对于每个测试点,输出 \(TAK\)(可满足)或 \(NIE\)(无法满足)。

【数据范围】

\(100\%\) \(1 \leqslant q \leqslant 10\) \(,\) \(1 \leqslant n,m,a,b \leqslant 1000\)


【分析】

炒鸡大水题

先用一个数组储存印章每一个墨最左上角墨相对位置

扫一遍纸张,一旦发现有需要印墨水的地方,就将其作为起始点扫一遍刚刚的数组,如果有矛盾则说明不满足。

注意要把题目看清楚,有三个要求,我一开始忘了第二条结果 \(WA\) 了三个点....

【Code】

#include<cstdio>
#define F(o,x,y) for(int o=x;o<=y;++o)
const int N=1005;
int T,n,m,a,b,t,nx,ny,stx,sty,wx[N*N],wy[N*N];char s[N][N],Q[N][N];
inline int judge(){
F(i,1,n)F(j,1,m)
if(Q[i][j]=='x')
F(k,1,t){
nx=i+wx[k],ny=j+wy[k];
if(nx>n||ny>m||Q[nx][ny]=='.')return 0;
Q[nx][ny]='.';
}
return 1;
}
int main(){
scanf("%d",&T);
while(T--){
stx=sty=t=0;
scanf("%d%d%d%d",&n,&m,&a,&b);
F(i,1,n)scanf("%s",Q[i]+1);
F(i,1,a){
scanf("%s",s[i]+1);
F(j,1,b)
if(s[i][j]=='x'){
if(!stx)wx[++t]=0,wy[t]=0,stx=i,sty=j;
else wx[++t]=i-stx,wy[t]=j-sty;
}
}
puts(judge()?"TAK":"NIE");
}
}

【题解】PIE [POI2015] [P3585]的更多相关文章

  1. 洛谷 P3585 [POI2015]PIE

    P3585 [POI2015]PIE 题目描述 一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色.你有一个a*b的印章,有些格子是凸起(会沾上墨水)的.你需要判断能否用这个印章印出纸上 ...

  2. 洛谷P3585 [POI2015]PIE

    传送门 题目大意:有个n*m的格子图,要求'x'点要被染成黑色 有个a*b的印章,'x'是可以染色的印章上的点. 要求用印章去染色格子 (1)印章不可以旋转. (2)不能把墨水印到纸外面. (3)纸上 ...

  3. POI2015题解

    POI2015题解 吐槽一下为什么POI2015开始就成了破烂波兰文题目名了啊... 咕了一道3748没写打表题没什么意思,还剩\(BZOJ\)上的\(14\)道题. [BZOJ3746][POI20 ...

  4. BZOJ3747:[POI2015]Kinoman——题解

    https://www.lydsy.com/JudgeOnline/problem.php?id=3747 https://www.luogu.org/problemnew/show/P3582 共有 ...

  5. 题解报告:hdu 1969 Pie(二分)

    Problem Description My birthday is coming up and traditionally I'm serving pie. Not just one pie, no ...

  6. 题解【UVA12097】Pie

    题目描述 输入格式 输出格式 输入输出样例 输入样例#1 3 3 3 4 3 3 1 24 5 10 5 1 4 2 3 4 5 6 5 4 2 输出样例#1 25.1327 3.1416 50.26 ...

  7. [POI2015]PIE

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

  8. 题解【Codeforces859C】Pie Rules

    题面 一道需要一定思考的 \(\text{DP}\) . 设 \(dp_i\) 表示第 \(i\) 步走的人能得到的最大分数, \(sum_i\) 表示 \(\sum_{j=i}^n a_j\) ,即 ...

  9. POI2015 解题报告

    由于博主没有BZOJ权限号, 是在洛咕做的题~ 完成了13题(虽然有一半难题都是看题解的QAQ)剩下的题咕咕咕~~ Luogu3585 [POI2015]PIE Solution 模拟, 按顺序搜索, ...

随机推荐

  1. Redis 配置【十】

    参考:http://www.runoob.com/redis/redis-conf.html Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf. 你可以通过 CONF ...

  2. Toast自定义

    Toast toast=new Toast(MainActivity.this); toast.setView(getLayoutInflater().inflate(R.layout.toast,n ...

  3. 树形DP 树的最小支配集,最小点覆盖与最大独立集

    最小支配集: 从V中选取尽量少的点组成一个集合,让V中剩余的点都与取出来的点有边相连. (点) 最小点覆盖: 从V中选取尽量少的点组成一个集合V1,让所有边(u,v)中要么u属于V1,要么v属于V1 ...

  4. hdu3756(三分)

    题意:三维坐标轴,有以原点为圆心,底面在xoy平面上,顶点在z轴上的圆锥,问圆锥的最小体积为多少才能完全覆盖空间里的所有点(n<=10000) 分析: 很容易想到转成二维问题,将其投影到xoz平 ...

  5. Oracle将一列值逗号拼接wm_concat函数

    --Oracle12c不再支持该函数,需要手动处理 --管理员登录授权给用户权限 GRANT CREATE SYNONYM TO c##sdic; / --创建 TYPE CREATE OR REPL ...

  6. java监控工具jconsole

    jconsole可以监控本地和远程进程 jvisualvm

  7. android中单元測试中的断言assert的使用与扩展

    首先看一组对照,比方说我们要測试的结果是一个Linearlaout AssertJ Android: assertThat(layout).isVisible() .isVertical() .has ...

  8. java 代理模式具体解释

    java 动态代理(JDK和cglib) 设计模式这东东每次看到就明确可过段时间又不能非常流利的说出来.今天就用具体的比喻和实例来加深自己的理解(小弟水平不高有不正确的地方希望大家能指出来). (1) ...

  9. 《软件project》——编码

       编码的目的是使用选定的程序设计语言,把模块的过程描写叙述翻译为用该语言书写的源程序. 源程序应该正确可靠.简明清晰,并且具有较高的效率.在编程的步骤中,要把软件具体设计的表达式翻译成为编程语言的 ...

  10. iOS CMSampleBuffer deep copy

    extension CVPixelBuffer { func copy() -> CVPixelBuffer { precondition(CFGetTypeID(self) == CVPixe ...