题意:给出一个n*m的矩阵,矩阵中的元素要么P要么是A

每次可以选择一个的子矩形,然后将矩阵中每一行都变为第一行,或者将矩阵中每一列都变为第一列

要求用最少的次数将矩阵中所有元素都变成A

题解:分类讨论,最多四次操作

#include<bits/stdc++.h>
#define forn(i, n) for (int i = 0 ; i < int(n) ; i++)
#define fore(i, s, t) for (int i = s ; i < (int)t ; i++)
#define fi first
#define se second
#define all(x) x.begin(),x.end()
#define pf2(x,y) printf("%d %d\n",x,y)
#define pf(x) printf("%d\n",x)
#define each(x) for(auto it:x) cout<<it<<endl;
#define pii pair<int,int>
using namespace std;
typedef long long ll;
const int maxn=4e5+5;
const int maxm=2e5+5;
const int inf=1e9;
int n,m;
vector<string> a;
int calc(){
int total=0;
vector<int> row(n,0),col(m,0);
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
if(a[i][j]=='A') {
row[i]++;
col[j]++;
total++;
}
if(total==0) return -1;
if(total==n*m) return 0;
if(row[0]==m || row.back()==m || col[0]==n || col.back()==n) return 1;
if(a[0][0]=='A' || a[0].back()=='A' || a[n-1][0]=='A' || a[n-1].back()=='A') return 2;
if(*max_element(all(row))==m || *max_element(all(col))==n) return 2;
if(row[0] || row.back() || col[0] || col.back()) return 3;
return 4;
}
void solve(){
cin>>n>>m;
a.resize(n);
for(int i=0;i<n;i++)
cin>>a[i];
int re=calc();
if(re==-1) puts("MORTAL");
else cout<<re<<"\n";
}
int main(){
int t;
cin>>t;
while(t--)
solve();
}

  

cf1280B的更多相关文章

随机推荐

  1. Docker三剑客之compose

    简介 Compose 项目是 Docker 官方的开源项目,负责实现对 Docker 容器集群的快速编排.从功能上看,跟 OpenStack 中的 Heat 十分类似.其代码目前在 https://g ...

  2. ubuntu-14.04.6配置IP

    配置环境与要求: 网卡列表如下: eth0:DHCP模式 eth1:静态模式 网络概况与要求: 192.168.2.0/24为外网(获取网络资源) 10.5.1.0/24为内网(终端服务管理) 系统默 ...

  3. CRC循环冗余检测C语言实现----花了几天时间乱写的

    由于笔者目前正在上计算机网络的课,老师要我们编一下crc的循环检测过程,所以我想着刚好在学c,那就随便看看写不写的了,首先百度了一下网上资料,基本都是用位移运算符实现的,由于本人懒得去看一下位移运算, ...

  4. python 存储数据

    如何进行数据存储,很多程序都要求用户输入某种信息,如让用户存储游戏首选项或提供要可视化的数据. 使用模块json进行数据存储. 1.1.使用json.dump()和json.load() #-*- e ...

  5. python 内置模块之ConfigParser--配置读写

    用于对特定的配置进行操作,当前模块的名称在 python 3.x 版本中变更为 configparser. #配置文件test.cfg [section1] k1 = v1 k2 :v2 k3 = 1 ...

  6. [python]locals内置函数

    locals() Update and return a dictionary representing the current local symbol table. Free variables ...

  7. BZOJ 2161 布娃娃(权值线段树)

    题意 给n<1e5个娃娃,每个娃娃有属性\(p\),\(c\),\(l\),\(r\)(均在ll范围内),问你对每个娃娃\(i\),满足所有\(l_j\leq p_i\leq r_j\)的娃娃\ ...

  8. Invoking Descriptors - Python 描述符的用法建议

    描述符用法建议, 内置的 property 类创建的是'覆盖型'(date descriptor), 实现了 __set__ 和 __get__. 特性 property 的 __set__ 方法 默 ...

  9. Keras学习系列——神经网络层组件

    对Keras提供的对各种层的抽象进行相对全面的概括 1 基础常用层 名称 作用 原型参数 Dense 实现全连接层 Dense(units,activation,use_bias=True, kern ...

  10. pytorch之 RNN classifier

    import torch from torch import nn import torchvision.datasets as dsets import torchvision.transforms ...