题意:给出一个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();
}

  

最新文章

  1. stm32 u8 u16 u32
  2. Linux批量更改文件后缀名
  3. Leetcode: String to Integer
  4. 受限玻尔兹曼机RBM
  5. 关于AS3获取当前URL和浏览器信息
  6. ECC校验原理以及在Nand Flash中的应用
  7. 【世外桃源】福音节目 swtychina.com
  8. mysql去重的最方便的两种方法
  9. HUST - 1599 Multiple
  10. 成小胖学习ActiveMQ&#183;基础篇
  11. 老李分享:robotium3.6与4.0 later 的区别 2
  12. java 之 建造者模式(大话设计模式)
  13. uva10410 栈
  14. TCP协议三次握手与四次挥手详解
  15. 3.ifconfig
  16. 自动弹出pickerview
  17. nginx反向代理uwsgi django服务器搭建总结
  18. caffe运行报错:datum channel&gt;0(0:0)
  19. Django项目--在开发环境运行静态页面
  20. 某浪PHP面试题及答案优化

热门文章

  1. linux 命令全名
  2. mint ui的tabBar监听路由变化实现tabBar切换
  3. DISCUZ 如何为主题帖列表页添加头像,显示发帖者头像
  4. 实验18:HDLC和PPP
  5. 机器学习(ML)七之模型选择、欠拟合和过拟合
  6. PostMan向企业微信机器人传送数据测试
  7. Linux系统之LAMP实现
  8. Linux 查看磁盘容量、查找大文件、查找大目录
  9. win10CPU版TensorFlow安装详细流程(踩N个坑之后的总结)
  10. 跨域的两种解决方法jsonp和CORS