题意:给出一个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. Web自动化测试项目搭建(一) 需求与设计

    一.项目需求 测试/生产环境更新后,自动化回归测试 项目易于维护和运行 支持多种测试策略 支持可视化测试报告 运行结果,支持多种方式通知相关人员 可定时/触发的方式运行自动化测试用例 二.设计 2.1 ...

  2. docker相关----解决tomcat容器启动成功,无法访问的问题

    使用docker安装了tomcat镜像,默认为latest最新的(8.5.50版本),依据tomcat镜像创建容器并同时做了端口映射 命令为:docker run --name tomcat01 -d ...

  3. Git详解之常用命令

    注意:此篇文章中的绝大部分内容来自摘抄,查阅人员请注意

  4. 【Nginx入门系列】第一章 手把手带你搭建Nginx服务器

    1 nginx安装环境 nginx是C语言开发,建议在linux上运行,本教程使用Centos6.5作为安装环境,搭建前请先按如下语句配置好环境. GCC 安装nginx需要先将官网下载的源码进行编译 ...

  5. vuex之getter(二)

    说明 使用vue,如果想对data数据派生一些状态,我们就用到计算属性或者侦听器,同样vux想要派生state中的一些状态,可以在store中定义一个getters属性,它相当于state的计算属性. ...

  6. 新来个技术总监,禁止我们使用Lombok!

    我有个学弟,在一家小型互联网公司做Java后端开发,最近他们公司新来了一个技术总监,这位技术总监对技术细节很看重,一来公司之后就推出了很多"政策",比如定义了很多开发规范.日志规范 ...

  7. rep stos 指令(Intel汇编)

    今天读代码时,忽然跳出如下一条指令==>> 汇编代码: rep stos dword ptr es:[edi] 在网上查了相关资料显示: /************************ ...

  8. 百度MP3音乐API接口及应用

    当你在百度去搜索一首歌时,你会发现有种更简单的方法. http://box.zhangmen.baidu.com/x?op=12&count=1&title=歌名$$作者$$$$ 例如 ...

  9. VC获取cookies的几种方法

    方法一: CInternetSession::GetCookie This member function implements the behavior of the Win32 function  ...

  10. SpringMVC基础(一)_控制器

    Spring MVC Spring MVC 基于模型-视图-控制器(Model-View-Controller)模式实现,它能够帮你构建灵活和松耦合的应用程序. 1.Spring MVC的请求追踪 每 ...