【CSP CCF记录】202206-2 寻宝!大冒险!

题目

 

 

过程

思路

1.绿化图坐标边界太大,不能直接用矩阵表示,可以用一个二维数组存储有树坐标的x,y值。

定义两个数组:绿化图arr[1005][2]、宝藏图数组b[55][55]

2.

依据条件,从绿化图中第一棵树的坐标开始区域遍历。统计绿化图与藏宝图中一一对应的树的棵数sum,在进行区域比对前,判断该区域树的数量是否等于sum,不等的话直接跳过该区域。

3.将绿化图中的每一棵树的坐标(x,y)作为(0,0)点,其它树的坐标(xx,yy)对应藏宝图中坐标(xx-x,yy-y)。

4.接着遍历藏宝图中每一个点,根据是否有树进行讨论判断。使用flag标记是否舍弃当前区域(1舍弃,0保留),分为以下三种情况讨论:

1.藏宝图范围超出绿化图范围,舍弃。

2.原宝藏图位置[j][k]没有树,从绿化图位置计算[j][k]有树,推测情况与真实情况不符,舍弃。

3.原宝藏图位置[j][k]有树,从绿化图位置计算[j][k]有树,推测情况与真实情况相符,保留;遍历完绿化图都没有找到树,舍弃。

参考:http://t.csdnimg.cn/wZw8m

代码

#include<bits/stdc++.h>
using namespace std;
 
int arr[1005][2];   //记录树的坐标
int b[55][55];   //藏宝图矩阵 
 
int main()
{
	int n,L,S;
	int sum=0;  //记录藏宝图中树的棵数 
	cin>>n>>L>>S;
	//输入树的坐标 
	for(int i=0;i<n;i++)  cin>>arr[i][0]>>arr[i][1];
	//输入藏宝图 
	for(int i=S;i>=0;i--)
	{
		for(int j=0;j<=S;j++)
		{
			cin>>b[i][j];    //注意先输入b[s][0]
			if(b[i][j]==1)  sum++;
		}
	}
	
	int num=0;   //符合的坐标数 
	for(int i=0;i<n;i++)
	{
		int x=arr[i][0];
		int y=arr[i][1];
		int t=0;  //记录当前区域中树的棵树 
		for(int j=0;j<n;j++)
		{
			int xx=arr[j][0];
			int yy=arr[j][1];
			//假设藏宝图在当前区域,统计当前区域中绿化图树与藏宝图中树一一对应棵数 
			//该预处理减少运行时间 
			if((xx-x>=0)&&(xx-x<=S)&&(yy-y>=0)&&(yy-y<=S)&&b[xx-x][yy-y]==1)
			{
				t++;
			}
		}
		if(t==sum)   //只有当前区域树的数量等于藏宝图中树的数量才需要考虑 
		{
			int flag=0;   //标记位
			//遍历藏宝图的树木坐标看绿化图中是否有对应 
			for(int j=0;j<=S;j++)
			{
				for(int k=0;k<=S;k++)
				{
					if (x + j > L || y + k > L)   //藏宝图范围超出绿化图的范围
					{
                        flag = 1;
                        break;
                    }
					if(b[j][k]==0)   //宝藏图[j][k]没有树
					{
						for(int m=0;m<n;m++)
						{
								int xx=arr[m][0];
			                    int yy=arr[m][1];
			                    if(xx-x==j&&yy-y==k)    //从绿化图推测[j][k]有树,与真实宝藏图矛盾 
			                    {
			                    	flag=1;
			                    	break;
								}
						}
					}			
					else  //宝藏图[j][k]有树
					{
						for(int m=0;m<n;m++)
						{
							    int xx=arr[m][0];
			                    int yy=arr[m][1];
			                    if(xx-x==j&&yy-y==k)//从绿化图推测[j][k]有树 
			                    {
			                    	break;
								}
								if(m==n-1)   //没有找到树 
								{
									flag=1;
									break;
								}
						}
					} 
					if(flag==1)  break; 
				}
				if(flag==1)  break;
			}
			if(flag==0)
			{
				num++;
			} 
		}
	}
	cout<<num;
	return 0;
}

结果

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/621878.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

spring cloud微服务example 入门第一个例子

新建Maven工程 删除src目录&#xff0c;修改poml.xml <modelVersion>4.0.0</modelVersion><groupId>org.example</groupId> <artifactId>SpringCloud_example</artifactId> <version>1.0-SNAPSHOT</version> <packaging&g…

物联网五层架构分析

物联网五层架构分析 随着科技的迅速发展&#xff0c;物联网&#xff08;IoT&#xff09;作为日常生活中不可或缺的一部分&#xff0c;已融入人们的生活和工作中。物联网五层架构&#xff0c;包括感知层、网络层、数据层、应用层和业务层&#xff0c;扮演着关键的角色。 感知层 …

WIFI模块的AT指令联网数据交互--第十天

1.1.蓝牙&#xff0c;ESP-01s&#xff0c;Zigbee, NB-Iot等通信模块都是基于AT指令的设计 初始配置和验证 ESP-01s出厂波特率正常是115200, 注意&#xff1a;AT指令&#xff0c;控制类都要加回车&#xff0c;数据传输时不加回车 1.2.上电后&#xff0c;通过串口输出一串系统…

【运维】如何安装ubuntu-24.04? 如何分区?

如何安装ubuntu-24.04&#xff1f;如何分区 经过一系列折腾&#xff0c;我总结了这几点&#xff1a; &#xff08;1&#xff09;在BIOS启动设置里&#xff0c;如果是GPT的硬盘格式&#xff0c;那么对应的就是UEFI的启动方式&#xff1b;如果是MBR的硬盘格式&#xff0c;那么对…

【Spring】GoF 之代理模式

一、代理模式 在 Java 程序中的代理模式的作用&#xff1a; 当一个对象需要受到保护的时候&#xff0c;可以考虑使用代理对象去完成某个行为 需要给某个对象的功能进行功能增强的时候&#xff0c;可以考虑找一个代理进行增强 A 对象无法和 B 对象直接交互时&#xff0c;也可以…

C# 使用Queue高效检索树行数据符合条件的数据,并返回完整树形数据示例

最近有项目需要加载大型树数据&#xff0c;数据大概3W条 后端使用C# NET6 前端使用Vue3 elementuiplus 虚拟tree 》解决大型树数据加载 遇到的问题是后端在检索数据时&#xff0c;要返回匹配数据的完整树目录 1.因为单条数据没有存放完整路径&#xff0c;需要通过父级ID逐…

【ARM Cortex-M 系列 2.1 -- Cortex-M7 Debug system registers】

请阅读【嵌入式开发学习必备专栏】 文章目录 Debug system registers中断控制状态寄存器&#xff08;ICSR&#xff09;Debug Halting Control and Status Register, DHCSR Debug 寄存器DCRSR与DCRDRCPU 寄存器读操作CPU 寄存器写操作CPU 寄存器选择CPU 寄存器读写示例 调试故障…

Ubuntu安装VScode

Ubuntu安装VScode 前言&#xff1a; 1、Ubuntu安装VScode比较方便 2、我更喜欢source insight 1、获取到linux版本的VScode安装包 VSCode 下载地址是&#xff1a;https://code.visualstudio.com/ 2、得到安装包 3、复制到ubuntu中&#xff0c;使用命令安装 sudo dpkg -i cod…

安卓短视频一键搬运软件_V1.5.2 高级版

短视频一键搬运app是一款非常实用的视频处理软件&#xff0c;拥有各种各样的视频处理功能&#xff0c;可以帮助用户进行视频的多项处理&#xff0c;首先用户可以在这里为视频去除水印&#xff0c;打开视频文件过后&#xff0c;再把视频里面的水印内容框选出来&#xff0c;这样就…

第三课,python基础语法(二),基本算术运算符、3种数据类型、变量命名规则

一&#xff0c;基本算术运算 数学中&#xff1a;&#xff0c;-&#xff0c;&#xff0c; *小练习 请在程序中&#xff0c;定义如下变量&#xff1a; 钱包余额(变量名&#xff1a;money)&#xff0c;初始余额50 请通过程序计算&#xff0c;再购买了&#xff1a; 冰淇淋10元可…

【C语言/数据结构】栈:从概念到两种存储结构的实现

目录 一、栈的概念 二、栈的两种实现方式 1.顺序表实现栈 2.链表实现栈 三、栈的顺序存储结构及其实现 1.栈的声明 2.栈的初始化 3.栈的销毁 4.栈的压栈 5.栈的弹栈 6.栈的判空 7.返回栈顶元素 8.返回栈的长度 四、栈的链式存储结构及其实现 1.栈的声明 2.栈的…

[C++核心编程-03]----C++函数提高学习

目录 引言 正文 01-函数提升简介 02-函数默认参数 03-函数占位参数 04-函数重载 05-函数重载的注意事项 总结 引言 函数在C编程中扮演着至关重要的角色&#xff0c;通过合理使用函数&#xff0c;可以提高程序的结构性、灵活性、可读性和维护性。因此&…

汇昌联信:拼多多入驻条件是哪些?

在电商领域&#xff0c;拼多多以其独特的团购模式迅速崛起&#xff0c;吸引了众多商家的目光。想要在拼多多上开店&#xff0c;了解其入驻条件是必不可少的第一步。下面将详细解读拼多多的入驻条件&#xff0c;帮助有意加入的商家们做好准备。 一、企业资质要求 想要成功入驻拼…

STM32(GPIO)

GPIO简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口 引脚电平&#xff1a;0V~3.3V&#xff0c;部分引脚可容忍5V 输出模式下可控制端口输出高低电平&#xff0c;用以驱动LED、控制蜂鸣器、模拟通信协议输出时序等 输入模式下可读取端口的高低电…

【C++】继承与多态的一些练习题

学习完了继承与多态&#xff0c;当然要来点练习题啦~ 第一题&#xff1a; class Base1 { public: int _b1; }; class Base2 { public: int _b2; }; class Derive : public Base1, public Base2 { public: int _d; }; int main(){ Derive d; Base1* p1 &d; Base2* p2…

Day_4

1. 地址簿功能 查询地址列表 属于常规方案 新增地址 属于常规方案 修改地址 删除地址 设置默认地址 2. 用户下单业务 数据库分析 订单表和订单明细表的关系&#xff1a;一对多 代码开发 controller 层 service 层 异常处理&#xff08;收货地址为空、超出配送范围、购物…

文件流-二进制文件(中北大学-程序设计基础(2))

目录 题目 源码 结果示例 题目 建立两个二进制磁盘文件f1.dat,f2.dat&#xff0c;编程实现以下工作&#xff1a; &#xff08;1&#xff09;将20个整数&#xff08;可在程序中初始化&#xff09;&#xff0c;分别存放到两个磁盘文件中&#xff0c;前10个放到f1.dat中&…

【数据可视化01】matplotlib实例介绍1

目录 一、引言二、实例介绍1.柱状图1)简单柱状图2)堆叠柱状图 2.线条形式3.折线图&#xff08;多子图&#xff09;4.散点图5.水平和垂直线条6.饼状图1&#xff09;饼状图2&#xff09;“条形饼”图 一、引言 matplotlib是一个用于绘制数据可视化的Python库。它可以创建各种静态…

Java并发编程:用户态、内核态、cache line和CPU缓存一致性协议

文章目录 一、介绍二、java中那些操作使用了内核态三、cache line的概念四、CPU缓存一致性协议 一、介绍 用户态和内核态是操作系统的两种运行状态&#xff0c;它们分别对应于不同的权限级别和访问能力。 用户态&#xff08;User Mode&#xff09;&#xff1a;这是应用程序运…

volatile详解、原理

文章目录 一、Volatile的定义和作用1.1 Volatile简介1.2 Volatile作用 二、并发编程中的三个问题&#xff1a;可见性、原子性、有序性二、Java内存模型&#xff08;JMM&#xff09;三、volatile变量的特性3.1 线程可见性3.2 禁止重排序禁止重排序原理禁止重排序举例 3.3 volati…