码迷,mamicode.com
首页 > 其他好文 > 详细

CF1350E Orac and Game of Life(BFS)

时间:2020-05-23 16:24:14      阅读:20      评论:0      收藏:0      [点我收藏+]

标签:include   mes   开始   game   const   cin   div   break   c++   

 

/*
 * 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\n",a[i][j]);
        else {
            p=p-t[i][j]+1;
            if (p&1)
                printf("%d\n",!a[i][j]);
            else
                printf("%d\n",a[i][j]);
        }
    }
}

 

CF1350E Orac and Game of Life(BFS)

标签:include   mes   开始   game   const   cin   div   break   c++   

原文地址:https://www.cnblogs.com/zhanglichen/p/12942657.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!