0
点赞
收藏
分享

微信扫一扫

C++ 鼎纹

f12b11374cba 2022-04-06 阅读 49

📋 个人简介

🔥问题描述

🔥输⼊格式

🔥输出格式

🔥样例输入

2
3 4 4 2
1100
0110
1100
10
01
10
00
2 2 2 2
11
11
01
10

🔥样例输出

YES
NO

🔥数据规模与约定

🍋对于 70% 的数据n,m,a,b≤50

🍋对于 100% 的数据1≤T≤10,1≤n,m,a,b≤1000

💯CODE

#include<bits/stdc++.h>
using namespace std;
struct kk{
    int x,y;
}k[100010];
char tar[1010][1010];
int n,m,a,b,t,s,tx,ty,sx,sy;
char g;
int main(){
    cin >> t;
    while(t--){
        int flg=1,cnt=0,ff=1;
        cin >> n >> m >> a >> b;
        for(int i = 0;i < n;i++)
            for(int j = 0;j < m;j++)
                tar[i][j ]= 0;
        for(int i = 1;i <= a;i++)
            for(int j = 1;j <= b;j++)
                tar[i][j] = 0;
        for(int i = 0;i < n;i++)
                 cin >> tar[i];;
                
        for(int i = 1;i <= a;i++)
            for(int j = 1;j <= b;j++){
                scanf(" %1d",&s);
                if(s){
                    if(ff == 1){
                        k[++cnt].x = 0;
                        k[cnt].y = 0;
                        sx = i;
                        sy = j;
                        ff = 0;
                    }
                    else{
                        k[++cnt].x = i-sx;
                        k[cnt].y = j-sy;    
                    }
                }
            }    
        for(int i = 0;i < n;i++){
            if(flg == 0)break;
            for(int j = 0;j < m;j++){
                if(flg == 0)break;
                if(tar[i][j] == '1'){
                    if(ff == 1){
                        flg = 0;
                        break;
                    }
                    for(int p = 1;p <= cnt;p++){
                        tx = i + k[p].x,ty = j + k[p].y;
                        char e = tar[tx][ty];
                        
                        if(tx >= 0 && ty >= 0 && tx < n && ty < m && (e == '1')){
                            tar[tx][ty] = '0';
                        }
                        else{
                            flg = 0;
                            break;
                        }
                    }
                }
            }
        }
            
        if(flg)
			cout << "YES" << endl;
		else
			cout << "NO" << endl;
    }
    return 0;
}

🌌朋友们,点赞是我更新的动力,明天再见,拜拜!!!

举报

相关推荐

0 条评论