codeforces#514.div2

A. Cashier

水题,将整个时间线分成几段整除即可

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <algorithm>
#include <cmath>
#include <cstring>
#include <vector>
#include <set>
#include <sstream>
#include <stack>
using namespace std;

char a[1005][1005];
int b[8][2] = {{-1,-1},{-1,0},{-1,1},{0,-1},{0,1},{1,-1},{1,0},{1,1}};
int main()
{
    int n,m;
    while(cin>>n>>m){
        int ans = 0,cnt = 0;
        for(int i = 0;i < n;i++)
            for(int j = 0;j < m;j++){
                cin>>a[i][j];
                if(a[i][j] == '#')
                    ans++;
            }
        for(int i = 1;i < n-1;i++){
            for(int j = 1;j < m-1;j++){
                int co = 0;
                for(int k = 0;k < 8;k++){
                    if(a[i+b[k][0]][j+b[k][1]] == '#' || a[i+b[k][0]][j+b[k][1]] == '1')
                        co++;
                    else
                        continue;
                }
                if(co == 8){
                    for(int k = 0;k < 8;k++){
                        if(a[i+b[k][0]][j+b[k][1]] == '#')
                            cnt++;
                        a[i+b[k][0]][j+b[k][1]] = '1';
                    }
                }
            }
        }
        //cout<<"ans: "<<ans<<endl;
        //cout<<"cnt: "<<cnt<<endl;
        if(ans == cnt) cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;

    }
    return 0;
}

B. Forgery

搜索,枚举(n-1)*(m-1)内每个点

猜你喜欢

转载自blog.csdn.net/hzaukotete/article/details/83149763