【Week14作业 B】Q老师与十字叉【模拟】

2023-05-16

题意:

在这里插入图片描述
在这里插入图片描述


思路:

存储网格图不可能开数组a[50000][50000],发现n*m<=400000,可以用a[400001]来存储,(i,j)->a[(i-1)*m+j]。
读入数据时记录下每一行每一列的白色格子数量,然后依次遍历所有格子,当前格子所在行列的白色格子数量就是行+列-公共白色格子。然后记录最小值即可。


总结:

一道很容易T的题目。优化:关闭流同步或用scanf,用memset代替for循环来初始化数组(不用memset会T,用了就A),当最小值已经为0时直接跳出循环,输出0即可。


代码:

#include <iostream>
#include <string.h>
using namespace std;

int q,n,m;
int ans;
int xi[50010],yi[50010];	//白色格子的数量 
bool a[400001];	//黑色为1白色为0,从1开始
//(i,j)->a[(i-1)*m+j] 
int main()
{
	ios::sync_with_stdio(false);
	cin>>q;
	while(q--)
	{
		cin>>n>>m;
		memset(xi,0,sizeof(xi));	//用memset不会T,用for循环会T 
		memset(yi,0,sizeof(yi));
		/*for(int i=1;i<=50000;i++)
			xi[i]=0,yi[i]=0;*/
		ans=1e9;
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				char c;
				cin>>c;
				if(c=='.')	//白色
					xi[i]++,yi[j]++,a[(i-1)*m+j]=0;
				else if(c=='*')	//黑色
					a[(i-1)*m+j]=1; 
			}
		}
		for(int i=1;i<=n;i++)
		{
			for(int j=1;j<=m;j++)
			{
				int num=xi[i]+yi[j];	//白色格子数量 
				if(a[(i-1)*m+j]==0)		//有一个公共的白色格子 
					num--;
				if(num<ans)
					ans=num;
				if(ans==0)
					break;
			}
			if(ans==0)
				break;
		}
		cout<<ans<<endl;
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【Week14作业 B】Q老师与十字叉【模拟】 的相关文章

随机推荐

  • vue3的reactive重新赋值无效的问题

    Vue3 官方的文档说明 xff1a reactive 返回一个对象的响应式代理 所以 reactive 方法应该作用于一个对象Object xff0c 如果要使用数组 xff0c 则需要包装一下 xff1a span class toke
  • vue-cli 项目热重载(热更新)失效的解决方法

    一般用vue cli自动构建的项目是默认开启了热更新了 xff0c 如果你手动修改了一些配置 xff0c 是可以关闭的 xff0c 比如在 vue config js 里面的 devServer 下可以配置 span class token
  • vue在引入外部js文件时可以使用this的方法

    在使用iview的table组件时 xff0c 需要从外部引入column js文件 xff0c 发现在外部文件种无法使用 this xff0c 参考了一下网上的文章 xff0c 写了以下方法 xff1a 1 首先在外部js文件中加入一个内
  • 解决 npm ERR! node-sass 和 gyp ERR! node-gyp 报错问题

    一 需要安装 msbuild 微软构建工具 span class token function npm span span class token function install span windows build tools span
  • Permutation 排列组合,主要是字符串的排列offer上的题目,还有leetcode的组合

    一个简洁版的结果过程说明 xff0c 固定一个位 xff0c 变换其他位 a b c d a b d c a c b d a c d b a d c b a d b c void perm char list int i int n int
  • winpcap编程函数介绍

    1 int pcap findalldevs pcap if t char 说明 xff1a 用来获得网卡的列表 参数 xff1a 指向pcap if t 类型的列表的指针的指针 char型指针 当打开列表错误时返回错误信息 返回值 为in
  • shell脚本实现数据库自动备份

    自动备份参考一 三步骤即可 xff0c 二步骤实现备份成功的同时推送消息到钉钉群 xff08 可省略 xff09 一 shell脚本实现数据库自动备份内容如下 xff08 我将脚本名称命名为back sh xff09 xff08 可复制以下
  • 【Week4 CSP B】咕咕东想吃饭【模拟】

    题意 xff1a 一共有n天 xff0c 每天需要买ai个生煎 共有两种购买方式 xff1a 在某一天一次性买两个 xff0c 或者为今明两天各买一个 每种购买方式都可以使用无数次 请问是否能每天恰好买ai个生煎 xff08 最后一天不能用
  • 【Week4 CSP C】可怕的宇宙射线【dfs剪枝】

    题意 xff1a 宇宙射线会在无限的二维平面上传播 xff08 可以看做一个二维网格图 xff09 xff0c 初始方向默认向上 宇宙射线会在发射出一段距离后分裂 xff0c 向该方向的左右45度方向分裂出两条宇宙射线 xff0c 同时威力
  • 【Week4作业 A】DDL的恐惧【贪心】

    题意 xff1a 有n个作业 1 lt 61 n lt 61 1000 xff0c 每个作业都有自己的DDL与平时分 请安排做作业的顺序 xff0c 拿到最多的平时分 输入 xff1a 共T个测试样例 xff0c 每个测试样例共三行 xff
  • 【Week5作业 C】平衡字符串【尺取法】

    题意 xff1a 一个长度为n xff08 n是4的倍数 xff09 的字符串s xff0c 其中仅包含 Q W E 39 R 四种字符 若四种字符在字符串中出现次数均为n 4 xff0c 则其为一个平衡字符串 现可以将s中连续的一段子串替
  • 【Week8作业 A】区间选点II【差分约束】

    题意 xff1a 给定一个数轴上的n个区间 xff0c 要求在数轴上选取最少的点使得第i个区间 ai bi 里至少有ci个点 1 lt 61 n lt 61 50000 0 lt 61 ai lt 61 bi lt 61 50000 1 l
  • 【Week8作业 B】猫猫向前冲【拓扑排序】

    题意 xff1a 一共n只猫猫 xff0c 编号依次为1至n 有m场猫猫比赛 xff0c p1 p2表示猫猫p1赢了猫猫p2 现求字典序最小的名次序列 思路 xff1a 猫猫之间的胜负关系可以构成一张有向无环图 xff0c p1赢了p2等价
  • 【Week8作业 C】班长竞选【SCC缩点】

    题意 xff1a 大学班级选班长 xff0c n个同学均可以发表意见 若意见为A B xff0c 则表示A认为B合适 意见具有传递性 xff0c 即A认为B合适 xff0c B认为C合适 xff0c 则A也认为C合适 共m条意见 xff0c
  • 【Week9作业 A】咕咕东的目录管理器【模拟】

    题意 xff1a 咕咕东的雪梨电脑的操作系统在上个月受到宇宙射线的影响 xff0c 时不时发生故障 xff0c 他受不了了 xff0c 想要写一个高效易用零bug的操作系统 这工程量太大了 xff0c 所以他定了一个小目标 xff0c 从实
  • 【Week12作业 B】必做题-2【模拟】

    题意 xff1a zjm被困在一个三维的空间中 现在要寻找最短路径逃生 xff01 空间由立方体单位构成 zjm每次向上下前后左右移动一个单位需要一分钟 xff0c 且zjm不能对角线移动 空间的四周封闭 zjm的目标是走到空间的出口 是否
  • 【Week12作业 C】必做题-3【动态规划】

    题意 xff1a 东东每个学期都会去寝室接受扫楼的任务 xff0c 并清点每个寝室的人数 每个寝室里面有ai个人 1 lt 61 i lt 61 n 从第i到第j个宿舍一共有sum i j 61 a i 43 43 a j 个人 这让宿管阿
  • selenium重要功能应用

    当使用C 编写爬虫时 xff0c 以下是一些常用的爬虫框架 xff1a AngleSharp xff08 用于HTML解析 xff09 HtmlAgilityPack xff08 用于HTML解析 xff09 ScrapySharp xff
  • 【CSP201809-3】元素选择器【模拟】

    题意 思路 xff1a 用point来存储结构化文档 xff0c 里面string label string id为标签和id xff0c int c为所在层数 xff0c 两个点就为一层 读入结构化文档 xff1a 用getline读入一
  • 【Week14作业 B】Q老师与十字叉【模拟】

    题意 xff1a 思路 xff1a 存储网格图不可能开数组a 50000 50000 xff0c 发现n m lt 61 400000 xff0c 可以用a 400001 来存储 xff0c i j gt a i 1 m 43 j 读入数据