【Codeforces Round #423 (Div. 2) B】Black Square
【Link】:http://codeforces.com/contest/828/problem/B
【Description】
给你一个n*m的格子;
里面包含B和W两种颜色的格子;
让你在这个格子中画一个正方形;
(大小,位置自己选但要求覆盖到所有现有的黑棋子);
然后,把里面的白棋子,染成黑棋子;
问你最少需要染多少个白棋子;
【Solution】
先得到一个矩形(这个矩形覆盖所有的黑棋子);
然后枚举所需要的正方形的左上角的位置;
这个正方形必然要覆盖这个矩形;
则这个左上角只能在这个正方形的左上角的左上方,或和正方形的左上角重合;
取那个矩形的右下角,只要正方形能够覆盖到右下角,就能覆盖整个矩形;
剩下的就不难写了;
获取正方形应该有的最小边长;
然后统计这个正方形里面W的个数就好;
【NumberOf WA】
0
【Reviw】
做题的时候不用着急:)
慢慢想
【Code】
#include <bits/stdc++.h>
using namespace std;
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
#define LL long long
#define rep1(i,a,b) for (int i = a;i <= b;i++)
#define rep2(i,a,b) for (int i = a;i >= b;i--)
#define mp make_pair
#define pb push_back
#define fi first
#define se second
#define ms(x,y) memset(x,y,sizeof x)
#define Open() freopen("F:\\rush.txt","r",stdin)
#define Close() ios::sync_with_stdio(0)
typedef pair<int,int> pii;
typedef pair<LL,LL> pll;
const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
const double pi = acos(-1.0);
const int N = 110;
int n,m,mini = N,maxi = 0,minj = N,maxj = 0;
char s[N][N];
int main(){
scanf("%d%d",&n,&m);
rep1(i,1,n) scanf("%s",s[i]+1);
rep1(i,1,n){
rep1(j,1,m)
if (s[i][j]=='B'){
mini = min(mini,i);
maxi = max(maxi,i);
minj = min(minj,j);
maxj = max(maxj,j);
}
}
if (maxi==0){
printf("1\n");
return 0;
}
int num = N*N;
rep1(i,1,n){
rep1(j,1,m){
if (i <= mini && j <= minj){
int lenj = maxj-j+1,leni = maxi-i+1;
lenj = max(lenj,leni);
int rj = j + lenj-1,ri = i + lenj -1;
if (rj > m || ri > n) continue;
int temp = 0;
rep1(ii,i,ri)
rep1(jj,j,rj)
if (s[ii][jj]=='W')
temp++;
num = min(num,temp);
}
}
}
if (num > n*n)
printf("-1\n");
else
printf("%d\n",num);
return 0;
}
【Codeforces Round #423 (Div. 2) B】Black Square的更多相关文章
- 【Codeforces Round #423 (Div. 2) C】String Reconstruction
[Link]:http://codeforces.com/contest/828/problem/C [Description] 让你猜一个字符串原来是什么; 你知道这个字符串的n个子串; 且知道第i ...
- 【Codeforces Round #423 (Div. 2) A】Restaurant Tables
[Link]:http://codeforces.com/contest/828/problem/A [Description] 有n个组按照时间顺序来餐馆; 每个组由一个人或两个人组成; 每当有一个 ...
- 【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers
[链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需 ...
- 【Codeforces Round #420 (Div. 2) C】Okabe and Boxes
[题目链接]:http://codeforces.com/contest/821/problem/C [题意] 给你2*n个操作; 包括把1..n中的某一个数压入栈顶,以及把栈顶元素弹出; 保证压入和 ...
- 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees
[题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...
- 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory
[题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...
- 【Codeforces Round #422 (Div. 2) D】My pretty girl Noora
[题目链接]:http://codeforces.com/contest/822/problem/D [题意] 有n个人参加选美比赛; 要求把这n个人分成若干个相同大小的组; 每个组内的人数是相同的; ...
- 【Codeforces Round #422 (Div. 2) C】Hacker, pack your bags!(二分写法)
[题目链接]:http://codeforces.com/contest/822/problem/C [题意] 有n个旅行计划, 每个旅行计划以开始日期li,结束日期ri,以及花费金钱costi描述; ...
- 【Codeforces Round #422 (Div. 2) B】Crossword solving
[题目链接]:http://codeforces.com/contest/822/problem/B [题意] 让你用s去匹配t,问你最少需要修改s中的多少个字符; 才能在t中匹配到s; [题解] O ...
随机推荐
- 解决maven 无法下载java-memcached的依赖问题
1.进入https://github.com/gwhalin/Memcached-Java-Client/downloads 下载java-memcached的jar包. 2.使用cmd进入maven ...
- Git常见问题 资料汇总
来源https://blog.csdn.net/albb_/article/details/80420468
- FCC高级编程篇之Record Collection
Record Collection You are given a JSON object representing a part of your musical album collection. ...
- 注解@SuppressWarnings
在JAVA中注解@SuppressWarnings("deprecation")的Deprecation是什么意思 过期的 @SuppressWarnings("depr ...
- NodeJS学习笔记 (7)网络服务-http-client(ok)
原文:https://github.com/chyingp/nodejs-learning-guide 自己敲代码: ClientRequest概览 当你调用 http.request(options ...
- JVM内存管理简单剖析
Java是一个跨平台语言,屏蔽操作系统的差异,无需关心复杂内存管理,做到编写一次到处运行.其强大的能力源于Java Virtual Machine (虚拟机)默默的付出.代码运行在虚拟机之上,虚拟机运 ...
- Linux 磁盘管理及分区
硬盘结构和基础知识 扇区(Sector)为最小的物理储存单位,每个扇区为512 bytes,将扇区组成一个圆就是磁道(track),不同磁盘的相同磁道组成磁柱(Cylinder),磁柱是分区(par ...
- linux上 mysql 的安装,以及解决不能远程访问数据库系统的问题
1.安装 通过 yum 安装最方便 2.重设密码: 修改 etc/my.cnf 文件 skip-grant-tables 跳出登录后,# /etc/init.d/mysqld restart 重启后 ...
- mac同时享受教育优惠和免手续费分期
神奇地址:工商银行 http://store.apple.com/cn_icbc_edu招商银行 http://store.apple.com/cn_cmb_edu农业银行 http://sto ...
- 紫书 习题 8-25 UVa 11175 (结论证明)(配图)
看了这篇博客https://blog.csdn.net/u013520118/article/details/48032599 但是这篇里面没有写结论的证明, 我来证明一下. 首先结论是对于E图而言, ...