恋愛SLG-「めがね」ゲットチャレンジ!
Posted Hyouka
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了恋愛SLG-「めがね」ゲットチャレンジ!相关的知识,希望对你有一定的参考价值。
「めがね」ゲットチャレンジ!
あなたはクライアントから画像分析の仕事を受けました。
N × N ピクセルの白黒画像と M × M ピクセルの白黒画像が与えられます。 白黒画像の各画素は 0 または 1 のいずれかです。 N × N ピクセルの画像を入力、M × M ピクセルの画像をパターンと呼ぶことにします。
あなたの仕事は、入力からパターンとの完全一致を探すことです。
入力とパターンがピクセルの位置 (y, x) で完全一致するとは、 全ての i, j (i = 0, 1, ... M - 1, j = 0, 1, ... M - 1) について、 (入力の位置 (y + j, x + i) におけるピクセル) = (パターンの位置 (j, i) におけるピクセル) が成立することをいいます。
また、依頼主からは、入力にはパターンと完全一致する箇所は必ず 1 つだけ存在するということを 伝えられています。
ここで、N = 4 の入力の例を見てみましょう。
図中の赤い線で囲まれている部分とパターンが完全一致していることがわかります。 完全一致のピクセルの位置、すなわち、(1, 0) を出力してください。
入力される値
入力は標準入力にて以下のフォーマットで与えられます。
q_{0, 0} q_{0, 1} q_{0, 2} ... q_{0, N-1}
q_{1, 0} q_{1, 1} q_{1, 2} ... q_{1, N-1}
...
q_{N-1, 0} q_{N-1, 1} q_{N-1, 2} ... q_{N-1, N-1}
M
p_{0, 0} p_{0, 1} p_{0, 2} ... p_{0, M-1}
p_{1, 0} p_{1, 1} p_{1, 2} ... p_{1, M-1}
...
p_{M-1, 0} p_{M-1, 1} p_{M-1, 2} ... p_{M-1, M-1}
条件
すべてのテストケースにおいて、以下の条件をみたします。
q_{i, j}, p_{i, j} は 0 または 1
パターンと完全一致する箇所は必ず1つだけ存在します
期待する出力
パターンと完全一致する左上のピクセルの座標を半角スペース区切りで出力してください。
入力例1
入力4
0 0 1 0
0 1 1 0
0 1 0 1
1 1 1 0
3
0 1 1
0 1 0
1 1 1
1 0
入力例2
入力4
0 0 0 0
0 0 1 1
0 0 1 1
0 0 0 0
2
1 1
1 1
1 2
#include <iostream> #include <cstring> #include <cstdio> #include <algorithm> #include <queue> #include <vector> #include <iomanip> #include <math.h> #include <map> using namespace std; #define FIN freopen("input.txt","r",stdin); #define FOUT freopen("output.txt","w",stdout); #define INFLL 0x3f3f3f3f3f3f3f #define lson l,m,rt<<1 #define rson m+1,r,rt<<1|1 typedef long long LL; typedef pair<double, double> PII; int mp[105][105]; int mp2[105][105]; int main() { //FIN int n, m; while(~scanf("%d", &n)) { for(int i = 0; i < n; i++) for(int j = 0; j < n; j++) scanf("%d", &mp[i][j]); scanf("%d", &m); for(int i = 0; i < m; i++) for(int j = 0; j < m; j++) scanf("%d", &mp2[i][j]); int sign = 0; int ans1, ans2; for(int i = 0; i < n; i++) { for(int j = 0; j < n; j++) { int flag = 0; for(int k = 0; k < m; k++) { for(int z = 0; z < m; z++) { if(mp2[k][z] != mp[i+k][j+z]) flag = 1; } if(flag) break; } if(!flag) { printf("%d %d\\n", i, j); sign = 1; break; } } if(sign) break; } } return 0; }
以上是关于恋愛SLG-「めがね」ゲットチャレンジ!的主要内容,如果未能解决你的问题,请参考以下文章