Codeforces Round #423 (Div. 2) B Black Square 黑色正方形 思维题
来源:互联网 发布:疑心暗鬼动作数据下载 编辑:程序博客网 时间:2024/05/17 10:52
CF传送门
题意:
1. 给你由B和W组成的二维图
2. 要求把最少数量的W变成B使得图内所有的B形成一个正方形
3. 如果不能形成正方形就输出-1
题解:
1. 如果这张图全是W,那么改变任何一个W都能形成只有一个B的正方形,所有答案是1
2. 如果图内的B能形成最小正方形的边长比图的长或宽大,那就不能形成正方形(就是越界情况)
3. 如果图内的B已经形成正方形,那答案就是0
以下是我的AC代码:
#include <iostream>using namespace std;char s[105][105];int lef[105],righ[105];int main(){ int n,m,startx=0,endx=0,starty=0,endy=0; cin >> n >> m; for(int i=1; i<=n; i++) { for(int j=1; j<=m; j++) { cin >> s[i][j]; if(s[i][j]=='B') { lef[i]=1; //有B的行 righ[j]=1; //有B的列 endx=i; //最后有B的一行的下标 if(endy<j) endy=j; //最后有B的一列的下标 } } } //找到有B的第一行的下标 for(int i=1; i<=n; i++) { if(lef[i]) { startx=i; break; } } //找到有B的第一列的下标 for(int j=1; j<=m; j++) { if(righ[j]) { starty=j; break; } } if(startx==0) cout << 1 << endl; else { int len; //正方形的边长 len=(endx-startx)>(endy-starty)?(endx-startx):(endy-starty); if(len+1<=n && len+1<=m) //用正方形的面积减去遍历图的B的总量比较安全 { int sum=0; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) if(s[i][j]=='B') sum++; cout << (len+1)*(len+1)-sum << endl; } else cout << -1 << endl; //发生越界,无法形成正方形 } return 0;}
阅读全文
0 0
- Codeforces Round #423 (Div. 2) B Black Square 黑色正方形 思维题
- Codeforces Round #423 (Div. 2) B. Black Square(思路)
- Codeforces Round #423 (Div. 2) B. Black Square
- Codeforces #423-Div. 2-B. Black Square
- Codeforces Round #423 B. Black Square
- Codeforces Round #423 B. Black Square
- Codeforces Round #247 (Div. 2)a.Black Square,b.Shower Line,c.k-Tree前三题
- Codeforces Round #122 (Div. 2) B. Square
- Codeforces Round #247 (Div. 2) - A. Black Square
- Codeforces Round #247(Div. 2) A. Black Square 水题
- Codeforces Round #296 (Div. 2) B(思维题)
- Codeforces Round #345 (Div. 2) B 思维题
- Codeforces Round #202 (Div. 2)(B)贪心,思维
- Codeforces Round #352 (Div. 2)(B)思维
- Codeforces Round #384 (Div. 2) (A+B)(思维)
- Codeforces Round #418 (Div. 2) A+B(思维)
- Codeforces Round #369 (Div. 2) B. Chris and Magic Square
- Codeforces Round #369 (Div. 2) B. Chris and Magic Square
- oracle---trunc()函数
- 三道题
- QEvent的使用注意事项
- Node.js用来做什么?我们为什么要用它?
- RMQ
- Codeforces Round #423 (Div. 2) B Black Square 黑色正方形 思维题
- 3DES加密,秘钥长度为32
- 解决maven下载慢的问题
- FM(因子分解机系列)
- shell getopts 用法
- table中的某一格字数太多,要换行
- ORACLE 不走索引(失效)的原因以及解决办法
- js删除数组元素
- js call()与apply()