time limit per test

2 seconds

memory limit per test

256 megabytes

input

standard input

output

standard output

You are given a picture consisting of n

rows and m columns. Rows are numbered from 1 to n from the top to the bottom, columns are numbered from 1 to m

from the left to the right. Each cell is painted either black or white.

You think that this picture is not interesting enough. You consider a picture to be interesting if there is at least one cross in it. A cross is represented by a pair of numbers x

and y, where 1≤x≤n and 1≤y≤m, such that all cells in row x and all cells in column y

are painted black.

For examples, each of these pictures contain crosses:

The fourth picture contains 4 crosses: at (1,3)

, (1,5), (3,3) and (3,5)

.

Following images don't contain crosses:

You have a brush and a can of black paint, so you can make this picture interesting. Each minute you may choose a white cell and paint it black.

What is the minimum number of minutes you have to spend so the resulting picture contains at least one cross?

You are also asked to answer multiple independent queries.

Input

The first line contains an integer q

(1≤q≤5⋅104

) — the number of queries.

The first line of each query contains two integers n

and m (1≤n,m≤5⋅104, n⋅m≤4⋅105

) — the number of rows and the number of columns in the picture.

Each of the next n

lines contains m

characters — '.' if the cell is painted white and '*' if the cell is painted black.

It is guaranteed that ∑n≤5⋅104

and ∑n⋅m≤4⋅105

.

Output

Print q

lines, the i-th line should contain a single integer — the answer to the i

-th query, which is the minimum number of minutes you have to spend so the resulting picture contains at least one cross.

Example
Input

Copy
9
5 5
..*..
..*..
*****
..*..
..*..
3 4
****
.*..
.*..
4 3
***
*..
*..
*..
5 5
*****
*.*.*
*****
..*.*
..***
1 4
****
5 5
.....
..*..
.***.
..*..
.....
5 3
...
.*.
.*.
***
.*.
3 3
.*.
*.*
.*.
4 4
*.**
....
*.**
*.**
Output

Copy
0
0
0
0
0
4
1
1
2
Note

The example contains all the pictures from above in the same order.

The first 5 pictures already contain a cross, thus you don't have to paint anything.

You can paint (1,3)

, (3,1), (5,3) and (3,5) on the 6-th picture to get a cross in (3,3). That'll take you 4

minutes.

You can paint (1,2)

on the 7-th picture to get a cross in (4,2)

.

You can paint (2,2)

on the 8-th picture to get a cross in (2,2). You can, for example, paint (1,3), (3,1) and (3,3) to get a cross in (3,3) but that will take you 3 minutes instead of 1

.

There are 9 possible crosses you can get in minimum time on the 9

-th picture. One of them is in (1,1): paint (1,2) and (2,1).

题意:找补充次数最少的十字架

题解:暴力模拟,分别把每行每列的  *  个数存进数组,找出含有最长 * 的行列以及行列所在坐标i,j,还要判断a[i][j]是否为 .(特判),是的话次数还要减一

#include<iostream>
#include<math.h>
#include<algorithm>
#include<string>
#include<vector>
using namespace std;
vector<int>a[];
int xx[],yy[];
char s;
int main()
{
int t, n, m;
cin >> t;
while (t--)
{
int x = -, y = -, cnt = ,x_pos,y_pos;
cin >> n >> m;
for (int i = ; i < n; i++)
{
for (int j = ; j < m; j++)
{
cin >> s;
if (s == '.')
a[i].push_back();
else
a[i].push_back();
}
}
for (int i = ; i < n; i++)
{
cnt = ;
for (int j = ; j < m; j++)
{
cnt = cnt + a[i][j];
}
xx[i]=cnt;
if(cnt>x)
x=cnt;
}
for (int i = ; i < m; i++)
{
cnt = ;
for (int j = ; j < n; j++)
{
cnt = cnt + a[j][i];
}
yy[i]=cnt;
if(cnt>y)
y = cnt; }
int ans=,p=;
for(int i=;i<n;i++)
{
for(int j=;j<m;j++)
{
if(xx[i]==x&&yy[j]==y&&a[i][j]==)
p=;
ans=min(m+n-xx[i]-yy[j],ans);
}
}
cout<<ans-p<<endl; for (int i = ; i < n; i++)//清空
a[i].clear();
}
// system("pause");
return ;
}

B. Yet Another Crosses Problem的更多相关文章

  1. Codeforces - 1194B - Yet Another Crosses Problem - 水题

    https://codeforc.es/contest/1194/problem/B 好像也没什么思维,就是一个水题,不过蛮有趣的.意思是找缺黑色最少的行列十字.用O(n)的空间预处理掉一维,然后用O ...

  2. Codeforces 1194B. Yet Another Crosses Problem

    传送门 直接枚举填满哪一行,然后看看这一行填满以后哪一列最小 这个预处理一下 $cnt[i]$ 表示初始时第 $i$ 列有几个位置填满就可以做到 $O(m)$ 对于所有情况取个 $min$ 就是答案, ...

  3. Educational Codeforces Round 68 Editorial

    题目链接:http://codeforces.com/contest/1194                                            A.Remove a Progre ...

  4. Educational Codeforces Round 68

    目录 Contest Info Solutions A.Remove a Progression B.Yet Another Crosses Problem C.From S To T D.1-2-K ...

  5. Educational Codeforces Round 68 (Rated for Div. 2)补题

    A. Remove a Progression 签到题,易知删去的为奇数,剩下的是正偶数数列. #include<iostream> using namespace std; int T; ...

  6. QFNU 10-02 19 training

    B - Yet Another Crosses Problem 题意:找如果使图中某一行某一列全部变成黑色,至少需要把多少个白方格变成黑方格 思路:直接找就可以,注意存储的时候要记得进行分开存储,存储 ...

  7. HDU 4978 A simple probability problem

    A simple probability problem Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K ( ...

  8. Problem O

    Problem Description Before bridges were common, ferries were used to transport cars across rivers. R ...

  9. Codeforces Round #425 (Div. 2) Problem A Sasha and Sticks (Codeforces 832A)

    It's one more school day now. Sasha doesn't like classes and is always bored at them. So, each day h ...

随机推荐

  1. Spring 中 bean 的生命周期?

    参考:https://www.cnblogs.com/kenshinobiy/p/4652008.html Spring Bean 生命周期如下: 1:Bean的建立: 容器寻找Bean的定义信息并将 ...

  2. CSS概述(最详细!!!)

    一.先综述 二.分述: 1.简介: 2.基本用法 3.引入方式: 4.盒模型         5.选择器:   6.常见文本样式及复合样式       7.改变行.块元素的属性: 8.标签显示与隐藏: ...

  3. ApacheDbUtilsUpdate

    ApacheDbUtilsUpdate package p1; import com.DataSourceUtil; import org.apache.commons.dbutils.QueryRu ...

  4. react - get或set 取值函数

    取值函数(getter)和存值函数(setter) 您可以添加以get或set为前缀的方法来创建getter和setter,它们是根据您正在执行的操作执行的两个不同的代码:访问变量或修改其值.对某个属 ...

  5. CSS文本居中显示

    因为一直为元素居中问题而困扰,所以决定把自己遇到和看到的方法记录下来,以便以后查看 如果要让inline或inline-block元素居中显示,则父元素css中包含text-align:center; ...

  6. Flutter | 状态管理特别篇——Provide

    前言 今天偶然发现在谷歌爸爸的仓库下出现了一个叫做flutter-provide的状态管理框架,2月8日才第一次提交,非常新鲜.在简单上手之后感觉就是一个字--爽!所以今天就跟大家分享一下这个新的状态 ...

  7. LNMP一键安装包 PHP自动升级脚本

    LNMP一键安装包 PHP自动升级脚本 2011年03月15日 上午 | 作者:VPS侦探 前一段时间完成了lnmp一键安装包的PHP自动升级脚本,今天发布出来,如果想升级PHP版本的lnmp用户可以 ...

  8. 搜索控制器UISearchController的使用

    说明:本文主要是将系统UISearchController控件声明文件中的属性.方法.代理等介绍下,后续再联合[搜索栏UISearchBar]这篇文章一起更新更实用的信息. 1.初始化 // 如果设置 ...

  9. 浏览器的HTML页面展示

    当你输入一个url链接发生了什么? 下面的图是上篇文章的改造版本 电脑浏览器输入百度 打开台式电脑或者笔记本中的浏览器(IE,谷歌,360等),访问百度http://www.baidu.com,此时发 ...

  10. C. Magic Grid 构造矩阵

    C. Magic Grid time limit per test 1 second memory limit per test 256 megabytes input standard input ...