【Link】:http://codeforces.com/contest/828/problem/B

【Description】



给你一个n*m的格子;

里面包含B和W两种颜色的格子;

让你在这个格子中画一个正方形;

(大小,位置自己选但要求覆盖到所有现有的黑棋子);

然后,把里面的白棋子,染成黑棋子;

问你最少需要染多少个白棋子;

【Solution】



先得到一个矩形(这个矩形覆盖所有的黑棋子);

然后枚举所需要的正方形的左上角的位置;

这个正方形必然要覆盖这个矩形;

则这个左上角只能在这个正方形的左上角的左上方,或和正方形的左上角重合;

取那个矩形的右下角,只要正方形能够覆盖到右下角,就能覆盖整个矩形;

剩下的就不难写了;

获取正方形应该有的最小边长;

然后统计这个正方形里面W的个数就好;



【NumberOf WA】



0



【Reviw】



做题的时候不用着急:)

慢慢想



【Code】

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define lson l,m,rt<<1
  4. #define rson m+1,r,rt<<1|1
  5. #define LL long long
  6. #define rep1(i,a,b) for (int i = a;i <= b;i++)
  7. #define rep2(i,a,b) for (int i = a;i >= b;i--)
  8. #define mp make_pair
  9. #define pb push_back
  10. #define fi first
  11. #define se second
  12. #define ms(x,y) memset(x,y,sizeof x)
  13. #define Open() freopen("F:\\rush.txt","r",stdin)
  14. #define Close() ios::sync_with_stdio(0)
  15. typedef pair<int,int> pii;
  16. typedef pair<LL,LL> pll;
  17. const int dx[9] = {0,1,-1,0,0,-1,-1,1,1};
  18. const int dy[9] = {0,0,0,-1,1,-1,1,-1,1};
  19. const double pi = acos(-1.0);
  20. const int N = 110;
  21. int n,m,mini = N,maxi = 0,minj = N,maxj = 0;
  22. char s[N][N];
  23. int main(){
  24. scanf("%d%d",&n,&m);
  25. rep1(i,1,n) scanf("%s",s[i]+1);
  26. rep1(i,1,n){
  27. rep1(j,1,m)
  28. if (s[i][j]=='B'){
  29. mini = min(mini,i);
  30. maxi = max(maxi,i);
  31. minj = min(minj,j);
  32. maxj = max(maxj,j);
  33. }
  34. }
  35. if (maxi==0){
  36. printf("1\n");
  37. return 0;
  38. }
  39. int num = N*N;
  40. rep1(i,1,n){
  41. rep1(j,1,m){
  42. if (i <= mini && j <= minj){
  43. int lenj = maxj-j+1,leni = maxi-i+1;
  44. lenj = max(lenj,leni);
  45. int rj = j + lenj-1,ri = i + lenj -1;
  46. if (rj > m || ri > n) continue;
  47. int temp = 0;
  48. rep1(ii,i,ri)
  49. rep1(jj,j,rj)
  50. if (s[ii][jj]=='W')
  51. temp++;
  52. num = min(num,temp);
  53. }
  54. }
  55. }
  56. if (num > n*n)
  57. printf("-1\n");
  58. else
  59. printf("%d\n",num);
  60. return 0;
  61. }

【Codeforces Round #423 (Div. 2) B】Black Square的更多相关文章

  1. 【Codeforces Round #423 (Div. 2) C】String Reconstruction

    [Link]:http://codeforces.com/contest/828/problem/C [Description] 让你猜一个字符串原来是什么; 你知道这个字符串的n个子串; 且知道第i ...

  2. 【Codeforces Round #423 (Div. 2) A】Restaurant Tables

    [Link]:http://codeforces.com/contest/828/problem/A [Description] 有n个组按照时间顺序来餐馆; 每个组由一个人或两个人组成; 每当有一个 ...

  3. 【Codeforces Round #432 (Div. 1) B】Arpa and a list of numbers

    [链接]h在这里写链接 [题意] 定义bad list是一个非空的.最大公约数为1的序列.给定一个序列,有两种操作:花费x将一个元素删除.花费y将一个元素加1,问你将这个序列变为good list所需 ...

  4. 【Codeforces Round #420 (Div. 2) C】Okabe and Boxes

    [题目链接]:http://codeforces.com/contest/821/problem/C [题意] 给你2*n个操作; 包括把1..n中的某一个数压入栈顶,以及把栈顶元素弹出; 保证压入和 ...

  5. 【Codeforces Round #420 (Div. 2) B】Okabe and Banana Trees

    [题目链接]:http://codeforces.com/contest/821/problem/B [题意] 当(x,y)这个坐标中,x和y都为整数的时候; 这个坐标上会有x+y根香蕉; 然后给你一 ...

  6. 【Codeforces Round #420 (Div. 2) A】Okabe and Future Gadget Laboratory

    [题目链接]:http://codeforces.com/contest/821/problem/A [题意] 给你一个n*n的数组; 然后问你,是不是每个位置(x,y); 都能找到一个同一行的元素q ...

  7. 【Codeforces Round #422 (Div. 2) D】My pretty girl Noora

    [题目链接]:http://codeforces.com/contest/822/problem/D [题意] 有n个人参加选美比赛; 要求把这n个人分成若干个相同大小的组; 每个组内的人数是相同的; ...

  8. 【Codeforces Round #422 (Div. 2) C】Hacker, pack your bags!(二分写法)

    [题目链接]:http://codeforces.com/contest/822/problem/C [题意] 有n个旅行计划, 每个旅行计划以开始日期li,结束日期ri,以及花费金钱costi描述; ...

  9. 【Codeforces Round #422 (Div. 2) B】Crossword solving

    [题目链接]:http://codeforces.com/contest/822/problem/B [题意] 让你用s去匹配t,问你最少需要修改s中的多少个字符; 才能在t中匹配到s; [题解] O ...

随机推荐

  1. split(":")[0].substring(1)

    java中拆分字符中的split(":")[0].substring(1)是什么意思啊,尤其[0] 可以解释一下吗?:比如你有一个字符串 "111:222:333&quo ...

  2. input[type="file"]的图片预览

    在项目中遇到用input标签file类型的文件上传,想实在上传之前进行图片的预览功能:之前的做的一个解决方案是文件先上传上去然后返回地址再显示在页面上,这样就不太好,因为用户基本信息可能并没有保存,但 ...

  3. Remember the Word UVALive - 3942 DP_字典树

    每个小单词的长度都是小于等于100的,这是个重要的突破口. Code: #include <cstdio> #include <algorithm> #include < ...

  4. 路飞学城Python-Day16

  5. ztree连接数据库,实现下拉菜单

    $(document).ready(function(){ var treeObj = $("#treeDemo"); $.fn.zTree.init(treeObj, setti ...

  6. mysql和mongodb的区别

    1.mongodb的概括 MongoDB(文档型数据库):提供可扩展的高性能数据存储 2.mongodb的功能概括 (1)基于分布式文件存储 (2)高负载情况下添加更多节点,可以保证服务器性能 (3) ...

  7. springMVC接受数组

    var obj = {}; var params = new Array(); var selected1 = $('#datatable').DataTable().rows('.selected' ...

  8. 仿射变换(Affine Transformation)

    转自:https://www.cnblogs.com/bnuvincent/p/6691189.html http://www.cnblogs.com/ghj1976/p/5199086.html 变 ...

  9. 升级glibc的感慨,

    1. 直接升级 glibc是gnu发布的libc库,即c运行库.glibc是linux系统中最底层的api,几乎其它任何运行库都会依赖于glibc.glibc除了封装linux操作系统所提供的系统服务 ...

  10. HTML一些标记

    4)a标签也可以转换样式为按钮 <a class="btn btn-primary" href="#" role="button"&g ...