@bzoj - 3750@ [POI2015] Pieczęć
@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ęć的更多相关文章
- BZOJ 3750: [POI2015]Pieczęć 【模拟】
Description 一张n*m的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色. 你有一个a*b的印章,有些格子是凸起(会沾上墨水)的.你需要判断能否用这个印章印出纸上的图案.印的过程中需要 ...
- [POI2015]Pieczęć
[POI2015]Pieczęć 题目大意: 一张\(n\times m(n,m\le1000)\)的方格纸,有些格子需要印成黑色,剩下的格子需要保留白色. 你有一个\(a\times b(a,b\l ...
- bzoj 4386: [POI2015]Wycieczki
bzoj 4386: [POI2015]Wycieczki 这题什么素质,爆long long就算了,连int128都爆……最后还是用long double卡过的……而且可能是我本身自带大常数吧,T了 ...
- BZOJ 4385: [POI2015]Wilcze doły
4385: [POI2015]Wilcze doły Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 648 Solved: 263[Submit][ ...
- BZOJ 4384: [POI2015]Trzy wieże
4384: [POI2015]Trzy wieże Time Limit: 20 Sec Memory Limit: 128 MBSubmit: 217 Solved: 61[Submit][St ...
- Bzoj 3747: [POI2015]Kinoman 线段树
3747: [POI2015]Kinoman Time Limit: 60 Sec Memory Limit: 128 MBSubmit: 553 Solved: 222[Submit][Stat ...
- BZOJ 3747 POI2015 Kinoman 段树
标题效果:有m点,每个点都有一个权值.现在我们有这个m为点的长度n该序列,寻求区间,它仅出现一次在正确的点区间内值和最大 想了很久,甚至神标题,奔说是水的问题--我醉了 枚举左点 对于每个请求留点右键 ...
- BZOJ 4380 [POI2015]Myjnie | DP
链接 BZOJ 4380 题面 有n家洗车店从左往右排成一排,每家店都有一个正整数价格p[i]. 有m个人要来消费,第i个人会驶过第a[i]个开始一直到第b[i]个洗车店,且会选择这些店中最便宜的一个 ...
- 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 ...
随机推荐
- 【springmvc学习】常用注解总结
@Controller 在springmvc中,我们用它来告诉前端控制器,他这个类是controller,也就是springmvc的一个对象了,我们在spring.xml配置文件中用<conte ...
- Spring松耦合示例(转)& IOC
Spring松耦合示例 轻松学习Spring<一> IoC容器和Dependency Injection模式 最近公司需要,项目中要用到Spring和Ibatis.趁着过年好好学习学习.I ...
- gitlab上fork别人的代码后更新的2种解决方式
1.解决方式1 首先要先确定一下是否建立了主repo的远程源: git remote -v如果里面只能看到你自己的两个源(fetch 和 push),那就需要添加主repo的源: git remote ...
- 类的加载classload和类对象的生成
在Java中最重要的可以说就是类的加载了.不论我们编写的功能多么复杂,或是多么简单,永远逃离不开的,就是将这个类从class文件加载到JVM中来. 类的加载过程 首先我们要了解一下类的加载过程,包括: ...
- Adding basic files · lcobucci/jwt@aad22ed · GitHub
Skip to content Features Business Explore Marketplace Pricing This repository Sign in or Sign up ...
- Faster RCNN算法训练代码解析(3)
四个层的forward函数分析: RoIDataLayer:读数据,随机打乱等 AnchorTargetLayer:输出所有anchors(这里分析这个) ProposalLayer:用产生的anch ...
- ecshop二次开发之视频上传
1.前台展示效果: 2.后台展示效果: 3.代码实现: 后台实现过程: 1.在languages/zh_cn/admin/goods.PHP中插入 $_LANG['tab_video'] = '视频上 ...
- 【eclipse】解决:eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题
eclipse或STS运行maven工程出现Missing artifact jdk.tools:jdk.tools:jar:1.7问题 最近项目中使用到大数据平台,代码中应用了hbase-clien ...
- Centos 下添加开机自启动服务和脚本【转】
最近刚玩Centos7的系统,跟Centos6还是很多方面有改变的,这里记录一下怎么在Centos7下添加开机自启动脚本和服务的方法. 1.添加开机自启服务 我这里以docker 服务为例,设置如下两 ...
- 完整版unity安卓发布流程(包括SDK有原生系统依赖关系的工程)
要3个东西!NDS,SDK,JDK, NDK官网下载:https://developer.android.google.cn/ndk/downloads/index.html(注意系统是不是64位) ...