CF1350E Orac and Game of Life(BFS)

Posted zhanglichen

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CF1350E Orac and Game of Life(BFS)相关的知识,希望对你有一定的参考价值。

 

/*
 * CF1350E
 * 题意:
 * 给出一个n*m的01矩阵,q组询问,称一个方格(i,j)是好的,当且仅当至少有一个
 * 与(i,j)相邻的方格颜色与(i,j)相同,经过一个回合后,好方格的颜色改变而不好的方格颜色不变。
 * 每组询问给出i,j,p,问p回合后方格(i,j)的颜色是什么。
 * 题解;
 * 好方格不会变化,不好的方格会变化,数轮之后好方格也会被染成不好的方格。
 * 因为好方格变为不好是逐层传递的,因此可以bfs出每个方格开始变化的时间,然后根据奇偶性判断最后的状态。
 */
#include<bits/stdc++.h>
 
using namespace std;
const int maxn=1010;
typedef long long ll;
int X[4]={1,0,-1,0};
int Y[4]={0,1,0,-1};
int a[maxn][maxn];
int t[maxn][maxn];
int n,m,qq;
int main () {
    cin>>n>>m>>qq;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=m;j++) {
            char c;
            cin>>c;
            a[i][j]=c-0;
        }
    queue<pair<int,int>> q;
    for (int i=1;i<=n;i++)
        for (int j=1;j<=m;j++)
            for (int k=0;k<4;k++) {
                int tx=i+X[k];
                int ty=j+Y[k];
                if (tx<1||tx>n||ty<1||ty>m) continue;
                if (a[tx][ty]==a[i][j]) {
                    t[i][j]=1;
                    q.push(make_pair(i,j));
                    break;
                }
            }
    while (!q.empty()) {
        int i=q.front().first;
        int j=q.front().second;
        q.pop();
        for (int k=0;k<4;k++) {
            int tx=i+X[k];
            int ty=j+Y[k];
            if (tx<1||tx>n||ty<1||ty>m) continue;
            if (t[tx][ty]) continue;
            t[tx][ty]=t[i][j]+1;
            q.push(make_pair(tx,ty));
        }
    }
    while (qq--) {
        int i,j;
        ll p;
        cin>>i>>j>>p;
        if (!t[i][j]||p<t[i][j])
            printf("%d
",a[i][j]);
        else {
            p=p-t[i][j]+1;
            if (p&1)
                printf("%d
",!a[i][j]);
            else
                printf("%d
",a[i][j]);
        }
    }
}

 

以上是关于CF1350E Orac and Game of Life(BFS)的主要内容,如果未能解决你的问题,请参考以下文章

CF1350D Orac and Medians(找规律)

CF-1350 D. Orac and Medians 思维

CF-1350 D. Orac and Medians 思维

cf--703--A-- Mishka and Game

cf1523A. Game of Life

CF 815 A. Karen and Game(暴力,模拟)