CCF-CSP 202206-2 寻宝!大冒险!

CCF-CSP 202206-2 寻宝!大冒险!

  • 😸题目要求
    • 🐈‍⬛题目背景
    • 🐈‍⬛问题描述
    • 🐈‍⬛输入格式
    • 🐈‍⬛输出格式
    • 🐈‍⬛样例说明
      • 🎶样例1输入
      • 🎶样例1输出
      • 🎶样例1解释
      • 🎶样例2输入
      • 🎶样例2输出
      • 🎶样例2解释
    • 🐈‍⬛子任务
    • 🐈‍⬛提示
  • 😸问题解决
    • 🐈满分代码(含逐行代码解释)
      • 🍭C++
    • 🐈场景拓展

😸题目要求

🐈‍⬛题目背景

暑假要到了。可惜由于种种原因,小 P 原本的出游计划取消。失望的小 P 只能留在西西艾弗岛上度过一个略显单调的假期……直到……

某天,小 P 获得了一张神秘的藏宝图。

🐈‍⬛问题描述

西西艾弗岛上种有 n n n 棵树,这些树的具体位置记录在一张绿化图上。

简单地说,西西艾弗岛绿化图可以视作一个大小为 ( L + 1 ) × ( L + 1 ) (L+1)×(L+1) (L+1)×(L+1) 01 01 01 矩阵 A A A,地图左下角(坐标 ( 0 , 0 ) (0,0) (0,0))和右上角(坐标 ( L , L ) (L,L) (L,L))分别对应 A [ 0 ] [ 0 ] A[0][0] A[0][0] A [ L ] [ L ] A[L][L] A[L][L]。其中 A [ i ] [ j ] = 1 A[i][j]=1 A[i][j]=1 表示坐标 ( i , j ) (i,j) (i,j) 处种有一棵树, A [ i ] [ j ] = 0 A[i][j]=0 A[i][j]=0 则表示坐标 ( i , j ) (i,j) (i,j) 处没有树。换言之,矩阵 A A A 中有且仅有的 n n n 1 1 1 展示了西西艾弗岛上 n n n 棵树的具体位置。

传说,大冒险家顿顿的宝藏就埋藏在某棵树下。并且,顿顿还从西西艾弗岛的绿化图上剪下了一小块,制作成藏宝图指示其位置。

具体来说,藏宝图可以看作一个大小为 ( S + 1 ) × ( S + 1 ) (S+1)×(S+1) (S+1)×(S+1) 01 01 01 矩阵 B B B S S S 远小于 L L L),对应着 A A A 中的某一部分。理论上,绿化图 A A A 中存在着一处坐标 ( x , y ) (x,y) (x,y)
0 ≤ x , y ≤ L − S 0 \leq x,y \leq L-S 0x,yLS)与藏宝图 B B B 左下角 ( 0 , 0 ) (0,0) (0,0) 相对应,即满足:对 B B B 上任意一处坐标 ( i , j ) (i,j) (i,j) 0 ≤ i , j ≤ S 0 \leq i,j \leq S 0i,jS),都有 A [ x + i ] [ y + i ] = B [ i ] [ j ] A[x+i][y+i]=B[i][j] A[x+i][y+i]=B[i][j]。当上述条件满足时,我们就认为藏宝图 B B B 对应着绿化图 A A A 中左下角为 ( x , y ) (x,y) (x,y)、右上角为 ( x + S , y + S ) (x+S,y+S) (x+S,y+S) 的区域。

实际上,考虑到藏宝图仅描绘了很小的一个范围,满足上述条件的坐标 ( x , y ) (x,y) (x,y) 很可能存在多个。请结合西西艾弗岛绿化图中 n n n 棵树的位置,以及小 P 手中的藏宝图,判断绿化图中有多少处坐标满足条件。

特别地,藏宝图左下角位置一定是一棵树,即 A [ x ] [ y ] = B [ 0 ] [ 0 ] = 1 A[x][y]=B[0][0]=1 A[x][y]=B[0][0]=1,表示了宝藏埋藏的位置。

🐈‍⬛输入格式

从标准输入读入数据。

输入的第一行包含空格分隔的三个正整数 n n n L L L S S S,分别表示西西艾弗岛上树的棵数、绿化图和藏宝图的大小。

由于绿化图尺寸过大,输入数据中仅包含 n n n 棵树的坐标而非完整的地图;即接下来 n n n 行每行包含空格分隔的两个整数 x x x y y y,表示一棵树的坐标,满足 0 ≤ x , y ≤ L 0 \leq x,y \leq L 0x,yL 且同一坐标不会重复出现。

最后 ( S + 1 ) (S+1) (S+1) 行输入小 P 手中完整的藏宝图,其中第 i i i 行( 0 ≤ i ≤ S 0 \leq i \leq S 0iS)包含空格分隔的 ( S + 1 ) (S+1) (S+1) 0 0 0 1 1 1,表示 B [ S − i ] [ 0 ] ⋅ ⋅ ⋅ B [ S − i ] [ S ] B[S-i][0]···B[S-i][S] B[Si][0]⋅⋅⋅B[Si][S]

需要注意,最先输入的是 B [ S ] [ 0 ] ⋅ ⋅ ⋅ B [ S ] [ S ] B[S][0]···B[S][S] B[S][0]⋅⋅⋅B[S][S] 一行, B [ 0 ] [ 0 ] ⋅ ⋅ ⋅ B [ 0 ] [ S ] B[0][0]···B[0][S] B[0][0]⋅⋅⋅B[0][S] 一行最后输入。

🐈‍⬛输出格式

输出到标准输出。

输出一个整数,表示绿化图中有多少处坐标可以与藏宝图左下角对应,即可能埋藏着顿顿的宝藏。

🐈‍⬛样例说明

🎶样例1输入

5 100 2
0 0
1 1
2 2
3 3
4 4
0 0 1
0 1 0
1 0 0

🎶样例1输出

3

🎶样例1解释

绿化图上 ( 0 , 0 ) (0,0) (0,0) ( 1 , 1 ) (1,1) (1,1) ( 2 , 2 ) (2,2) (2,2) 三处均可能埋有宝藏。

🎶样例2输入

5 4 2
0 0
1 1
2 2
3 3
4 4
0 0 0
0 1 0
1 0 0

🎶样例2输出

0

🎶样例2解释

如果将藏宝图左下角与绿化图 ( 3 , 3 ) (3,3) (3,3) 处对应,则藏宝图右上角会超出绿化图边界,对应不成功。

🐈‍⬛子任务

40% 的测试数据满足: L ≤ 50 L \leq 50 L50

70% 的测试数据满足: L ≤ 2000 L \leq 2000 L2000

全部的测试数据满足: n ≤ 1000 n \leq 1000 n1000 L ≤ 1 0 9 L \leq 10^9 L109 S ≤ 50 S \leq 50 S50

🐈‍⬛提示

实际测试数据中不包括答案为 0 0 0 的用例。

😸问题解决

🐈满分代码(含逐行代码解释)

🍭C++

#include<bits/stdc++.h>
using namespace std;map<pair<int, int>, int>tree; //pair表示的是坐标(x,y),映射到0或1上(即有没有树)
int n, L, S;
int A[1010][2];
int B[51][51];bool check(int x, int y){if(x + S > L || y + S > L) return false; //排除藏宝图过大的情况 for(int i = 0; i <= S; i++){for(int j = 0; j <= S; j++){if(B[i][j] == 1){if(tree.count({x+i, y+j}) != 1) return false;}if(B[i][j] == 0){if(tree.count({x+i, y+j}) == 1) return false;}}} return true;
}int main(){cin >> n >> L >> S;for(int i = 0; i < n; i++){cin >> A[i][0] >> A[i][1];tree[{A[i][0], A[i][1]}] = 1;} for(int i = S; i >= 0; i--){for(int j = 0; j <= S; j++){cin >> B[i][j]; //注意题目中所描述的矩阵B的形状 }}int result = 0;for(int i = 0; i <= n; i++){if(check(A[i][0], A[i][1])) result++;}cout << result << endl;return 0;
}

🐈场景拓展

本题代码主要涉及到二维空间内的模式识别和匹配问题,本题代码的核心思想是在一个大的数据集中寻找与给定模式完全匹配的子集,它通过对给定区域内的特定模式(在这个例子中是树木的分布)进行搜索和验证。

  • 地图或矩阵匹配问题:在一个大的二维数组(如地图、森林)中寻找与给定小矩阵(如藏宝图、特定图案)完全匹配的区域。这类问题常见于图像处理、游戏开发(如寻宝、迷宫探索)和模式识别领域。
  • 环境模拟与分析:在生态学、城市规划或农业科学等领域模拟特定环境下的分布情况,如树木、建筑物或其他自然或人造物的分布,并分析其对环境的影响或符合特定条件的区域。
  • 图像处理与识别:虽然本题代码示例是以文本形式处理数据,但相似的逻辑可以应用于图像识别中,比如寻找图像中的特定标志、图案或对象。这需要将图像数据转换为二维数组或矩阵,并定义匹配规则。
  • 游戏开发中的关卡设计与检测:在某些类型的游戏中,可能需要检测地图上是否存在符合特定规则的结构或模式,如检查玩家是否按照特定的布局建造了建筑物或其他物体。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

容器库(4)-std::forward_list

std::forward_list是可以从任何位置快速插入和移除元素的容器&#xff0c;不支持快速随机访问&#xff0c;只支持正向迭代。 本文章的代码库&#xff1a; https://gitee.com/gamestorm577/CppStd 成员函数 构造、析构和赋值 构造函数 可以用元素、元素列表、迭代器或者另…

qt学习:arm摄像头+c调用v412框架驱动+qt调用v412框架驱动 显示摄像头画面

目录 跟内核进行数据通信的函数 编程步骤 c代码 头文件 打开摄像头文件 /dev/videox 获取当前主机上&#xff08;开发板&#xff09;摄像头列表信息 设置当前摄像头的画面格式 比如说 设置 采集图像的宽度为640 高度 480 在内核空间中&#xff0c;申请一个缓冲区队列…

【 buuctf-面具下的 flag】

直接 binwalk 提取图片内容其中 zip 为伪加密&#xff08;如下图&#xff09;&#xff0c;在 macOS 上当我运行 binwalk -e 指令来提取图片中内容是&#xff0c;zip可以自动解压出来 flag.vmdk&#xff0c;不需要修改压缩源文件目录区的全局方式位标记值。 在 kali Linux 下&am…

RabbitMQ-4.MQ的可靠性

MQ的可靠性 4.MQ的可靠性4.1.数据持久化4.1.1.交换机持久化4.1.2.队列持久化4.1.3.消息持久化 4.2.LazyQueue4.2.1.控制台配置Lazy模式4.2.2.代码配置Lazy模式4.2.3.更新已有队列为lazy模式 4.MQ的可靠性 消息到达MQ以后&#xff0c;如果MQ不能及时保存&#xff0c;也会导致消…

论文阅读-Automated Repair of Programs from Large Language Models

文章主旨&#xff1a;研究了Codex自动生成的程序中的错误&#xff0c;并探讨了现有的程序修复&#xff08;APR&#xff09;工具以及新发布的Codex-e是否能够修复自动生成的有缺陷的程序。 现在基于大语言模型&#xff0c;输入自然语言&#xff0c;生成代码的应用非常普遍。但是…

golang 中间件使用

1、自定义中间件函数 func CustomMiddleware() gin.HandlerFunc {return func(c *gin.Context) {// 在请求之前执行的逻辑fmt.Println("执行自定义中间件 - 请求之前")// 调用链中的下一个处理程序c.Next()// 在请求之后执行的逻辑fmt.Println("执行自定义中间…

立足智能存取解决方案|HEGERLS智能托盘四向车储存制动能量 实现能源回收

对于商业配送和工业生产的企业而言&#xff0c;如何能高效率、低成本进行低分拣、运输、码垛、入库&#xff0c;用以提升仓库空间的利用效率&#xff0c;是现在大多企业急需要解决的行业痛点。对此&#xff0c;为了解决上述痛点&#xff0c;近年来&#xff0c;物流仓储集成商、…

常用TS总结

基本用法 普通 const num: number 10const isStop: boolean falseconst title: string 常用TS总结const curName: null nullconst curType: undefined undefinedconst birthday: Date new Date() 对象 // typetype LoginParams {account: string}// interfaceinterfac…

docker常用10条容器操作命令

Docker 中一些常用的容器操作命令&#xff0c;我们可以根据需要使用这些命令来管理和操作 Docker 容器。我们这次以Hell-world这个镜像为例来说明&#xff1a; 1. docker pull hello-world #拉取hell-world镜像 2. docker images # 查看本地拉取的镜像 3. docker run hello…

Maven:项目无法产生Maven Dependencies且无法update project报cannot nest错误

找自己出错项目的.classpath文件&#xff0c;打开&#xff0c;ctrlf&#xff0c;找是否有以下文件&#xff0c;如果没有在末尾加进去&#xff0c;再refresh项目即可&#xff1a; <classpathentry kind"con" path"org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINE…

【python】绘制爱心图案

以下是一个简单的Python代码示例&#xff0c;它使用turtle模块绘制一个代表爱和情人节的心形图案。 首先&#xff0c;请确保计算机上安装了Python和turtle模块。然后&#xff0c;将以下代码保存到一个.py文件中&#xff0c;运行它就可以看到爱心图案的绘制过程。 import turt…

20240203在Ubuntu20.04.6下配置stable-diffusion-webui.git

20240203在Ubuntu20.04.6下配置stable-diffusion-webui.git 2024/2/3 11:55 【结论&#xff1a;在Ubuntu20.04.6下&#xff0c;生成512x512分辨率的图像&#xff0c;大概需要11秒钟&#xff01;】 前提条件&#xff0c;可以通过技术手段上外网&#xff01;^_首先你要有一张NVID…

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024)

2024清洁能源、环境与智慧城市国际研讨会(ISCEESC2024) 会议简介 2024年清洁能源、环境与智慧城市国际研讨会&#xff08;ISCEESC2024&#xff09;将在中国丽江举行。本次会议主要围绕清洁能源、环境和智慧城市等研究领域&#xff0c;旨在为该研究领域的专家学者提供一个国际…

用云手机打造tiktok账号需要注意些什么?

随着tiktok平台的火热&#xff0c;越来越多的商家开始尝试更高效的tiktok运营方法。其中&#xff0c;tiktok云手机作为一种新科技引起了很多人的注意&#xff0c;那么用云手机运营tiktok需要注意些什么&#xff1f;下文将对此进行详细解析。 1. 不是所有的云手机都适合做tiktok…

【分享】如何运用数字I/O来保护继电器

1.简述 在开关系统中&#xff0c;短路或者是开路的情况下&#xff0c;由于存在着额外的电流或者是电压&#xff0c;继电器往往会过载。所有的继电器都有一个最大的承载电流和热切换功率&#xff0c;如果超出了这个范围&#xff0c;会增加继电器焊接在一起的风险&#xff0c;从…

项目02《游戏-10-开发》Unity3D

【完成本集功能后共享1-10集整套代码】 基于 项目02《游戏-09-开发》Unity3D &#xff0c; 任务&#xff1a;传送至其他场景&#xff0c; 首先在场景中加入传送门&#xff0c; 设置人物标签&#xff0c; using UnityEngine; using UnityEngine.SceneManagement; u…

代码随想录算法训练营第三十七天|1049. 最后一块石头的重量 II ,494. 目标和 , 474.一和零

1049. 最后一块石头的重量 II 视频讲解&#xff1a;https://www.bilibili.com/video/BV14M411C7oV https://programmercarl.com/1049.%E6%9C%80%E5%90%8E%E4%B8%80%E5%9D%97%E7%9F%B3%E5%A4%B4%E7%9A%84%E9%87%8D%E9%87%8FII.html 本题其实就是尽量让石头分成重量相同的两堆&a…

2024-02-05(Hive)

1.Hive中抽样表数据 对表进行随机抽样是非常有必要的。 大数据体系下&#xff0c;在真正的企业环境中&#xff0c;很容易出现很大的表&#xff0c;比如体积达到TB级别的。 对这种表一个简单的SELECT * 都会非常的慢&#xff0c;哪怕LIMIT 10想要看10条数据&#xff0c;也会走…

树莓派4b连接WQ9201外置无线网卡命令行配置详解

树莓派4B连接WQ9201无线网卡 接线方式 蓝色的线来连接树莓派和WQ9201demo板&#xff0c;USB接树莓派的USB接口&#xff0c;microUSB一端接demo板靠近天线部分的microUSB口。 驱动和固件准备 驱动直接放在树莓派系统的任意目录&#xff0c;目前配置则是将驱动放在树莓派的主目…

使用PaddleNLP识别垃圾邮件:用BERT做中文邮件内容分类,验证集准确率高达99.6%以上(附公开数据集)

使用PaddleNLP识别垃圾邮件:用BERT做中文邮件内容分类,验证集准确率高达99.6%以上(附公开数据集)。 要使用PaddleNLP和BERT来识别垃圾邮件并做中文邮件内容分类,可以按照以下步骤进行操作: 安装PaddlePaddle和PaddleNLP:首先,确保在你的环境中已经安装了PaddlePaddle和…