使用C++的CCF-CSP满分解决方案 202206-2 寻宝!大冒险!点集

CCF-CSP 202206-2-寻宝大冒险 (Python) 三种思路 偏差列表,集合,元组 满分实现 CCF-CSP 202206-2-寻宝大冒险 (Python 实现) 三种思路,满分实现 阅读详情

在这里插入图片描述

解题思路

这题如果用二维矩阵肯定会超标,因为样例保证n<=109n <= 10^9n<=109,所以考虑用点集来处理。

  1. 读入所有的树的位置,每个位置用一个pair来记录
  2. 记录每个可能的左下角——其实也就是树的位置——对应的藏宝图范围覆盖了多少棵树
  3. 读入藏宝图中树的位置和个数
  4. 对于每颗绿化图中的树,检查树的个数与藏宝图是否一致,检查树的位置与藏宝图是否一致,二者均符合则答案加一
  5. 输出答案

满分代码实现

#include <iostream>
#include <set>
#include <algorithm>
#include <cmath>
#include <map>
using namespace std;

int main() {
	set<pair<int, int> > forests;
	set<pair<int, int> > treasures;
	map<pair<int, int>, int> counts;
	int n = 0;
	int forest, treasure;
	cin >> n >> forest >> treasure;
	int x = 0, y = 0;
	for (int i = 0; i < n; i++) {
		cin >> x >> y;
		forests.insert(make_pair(x, y));
	}
	for (set<pair<int, int> >::iterator it = forests.begin(); it != forests.end(); it++) {
		x = it->first, y = it->second;
		for (int i = x; i >= max(x - treasure, 0); i--) {
			for (int j = y; j >= max(y - treasure, 0); j--) {
				if (!forests.count(make_pair(i, j))) continue;
				if (!counts.count(make_pair(i, j))) {
					counts[make_pair(i, j)] = 1;
				}
				else counts[make_pair(i, j)]++;
			}
		}
	}
	int isTree = 0;
	int trees = 0;
	for (int i = treasure; i >= 0; i--) {
		for (int j = 0; j <= treasure; j++) {
			cin >> isTree;
			if (!isTree) continue;
			treasures.insert(make_pair(i, j));
			trees++;
		}
	}
	int ans = 0;
	bool flag = true;
	for (set<pair<int, int> >::iterator it = forests.begin(); it != forests.end(); it++) {
		flag = true;
		x = it->first, y = it->second;
		if (counts[make_pair(x, y)] != trees) continue;
		if (x + treasure > forest || y + treasure > forest) continue;
		for (set<pair<int, int> >::iterator t = treasures.begin(); t != treasures.end(); t++) {
			if (!forests.count(make_pair(x + t->first, y + t->second))) {
				flag = false;
				break;
			}
		}
		
		if (flag) {
			// cout << x << " " << y << endl;
			ans++;
		}
	}
	cout << ans;
	return 0;
} 
【csp202206-2】寻宝!大冒险!(c++100分) 排序后遍历,对于每棵树,如果不足以延伸出一个和藏宝图小矩阵一样大的矩阵(即L-sx 阅读详情

相关推荐

CCF-CSP 202206-2寻宝大冒险:用C++暴力算法拿满分的保姆级思路拆解

本文详细解析了CCF-CSP 202206-2寻宝大冒险题目的暴力算法实现,从题目本质理解到数据结构设计,再到核心匹配逻辑和边界处理,提供了完整的解题思路和优化建议。适合算法竞赛新手学习如何通过暴力算法高效解决问题,并掌握相关预处理和优化技巧。

weixin_30653023的博客 428

CCF-CSP2022-6-2寻宝大冒险

最后 (S+1) 行输入小 P 手中完整的藏宝图,其中第 i 行(0≤i≤S)包含空格分隔的 (S+1) 个 0 和 1,表示 B[S−i][0]⋯B[S−i][S]。其中 A[i][j]=1 表示坐标 (i,j) 处种有一棵树,A[i][j]=0 则表示坐标 (i,j) 处没有树。需要注意,最先输入的是 B[S][0]⋯B[S][S] 一行,B[0][0]⋯B[0][S] 一行最后输入。对 B 上任意一处坐标 (i,j)(0≤i,j≤S),都有 A[x+i][y+j]=B[i][j]。

zengxuan151168的博客 506

第26次ccf认证第二题:寻宝!大冒险!

ccf26-2

Sunnyztg的博客 1万+

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

暴力(只存储绿化图数木位置)

ZeroXback的博客 526

CCF-CSP 202206-2寻宝大冒险:用暴力算法拿满分的保姆级思路拆解(附C++代码)

本文详细解析了CCF-CSP 202206-2寻宝大冒险题目,通过暴力算法实现满分解答。文章以厨房做菜为比喻,逐步拆解题目核心,提供C++代码实现和优化技巧,帮助读者掌握二维矩阵匹配问题的解决方法。重点介绍了暴力算法的四步框架和常见陷阱,适合编程竞赛选手参考学习。

weixin_42567752的博客 85

第26次CCF CSP认证真题解

直接模拟不注意优化的话只有40分,通过观察可以发现,当B[0][0] == 1时才需要对A数组和B数组的对应元素进行比较并统计,在 if 中添加该条件即可降低时间复杂度,但仍然只有70分,要拿满分的话还需要做其他优化处理。目前只会70分的题解...公式运用题,按照题意模拟即可。

weixin_60762640的博客 612

CCF-CSP认证‘寻宝!大冒险!’满分攻略:用暴力算法破解二维坐标匹配(附C++代码详解)

本文深入解析CCF-CSP认证考试中的'寻宝!大冒险!'题目,通过暴力算法高效解决二维坐标匹配问题。文章详细讲解了数据特征分析、解题框架设计及C++代码实现,特别适合算法竞赛初学者学习暴力算法的适用场景和优化技巧。

weixin_30591551的博客 324

CSP认证第二题避坑指南:稀疏数组处理大尺寸地图

本文针对CCF CSP认证第二题中稀疏数组处理大尺寸地图的难点,以“寻宝大冒险”为例,深入剖析了暴力存储的内存瓶颈,并提供了坐标列表、哈希表优化及坐标压缩等实战策略。文章详细讲解了如何利用稀疏数组思想实现内存与效率的平衡,帮助考生在竞赛中避免内存超限,轻松拿满分。

weixin_29207533的博客 275

从70分到100分:CCF寻宝大冒险题目的STL与稀疏数组技巧

本文深入解析CCF CSP认证中“寻宝大冒险”题目的满分攻略。针对大规模稀疏数据场景,详细阐述了如何运用STL容器(如set)实现稀疏数组思想,将问题转化为点集匹配,从而高效解决内存与时间限制,帮助考生从70分提升至100分。

nut55的博客 413

CCF-CSP真题202206-归一化处理/寻宝大冒险

暴力:遍历绿化图的每个树,先判断藏宝图里树的数量和当前树的右上边长为s的正方形的树的数量是否一致,如果一致,再循环遍历判断是否相等。由于大地图的数据范围很大,所以不能用二维数组进行存储整张地图所以将大地图上给出的n个1的坐标用。这题如果用二维矩阵肯定会超标,因为样例保证,所以考虑用点集来处理。进行存储(用二维数组也可以)然后将小地图也进行存储。数学题:直接计算平均值、方差、按公式计算即可!在大地图寻找小地图左下角匹配次数。,从该点进行遍历小地图,如果符合便。优化:只存储1的点坐标,使用。

全网粉丝30W+,优快云、稀土掘金人工智能领域签约作者,人工智能、大模型、Python 爬虫,商务合作,请私信沟通。 1320

如何在TRAE(国际版)中搭建ESP-IDF环境以及怎么使用ESP-IDF插件编译烧录到ESP32s3中

点击进入,再点击ESPRESSIF中的EXPRESS,这里会下载ESP-IDF所需要的全部工具和包等等。首先我们从终端中进入项目所在的目录中,我的项目在E盘下的jikecode\esp32s3-client中,我就进入这个目录下。,因为我的项目是针对ESP32-S3进行开发的,所以这里的芯片型号是esp32s3,大家根据各自芯片的型号来输入。执行了这个命令后,ESP-IDF会自动配置与ESP-S3相关的编译选项,生成对应芯片的配置文件。进入第一个ESP-IDF插件,进行安装,注意安装的是。

一个爱折腾技术的普通人,分享踩过的坑、学到的干货。 1502

CCF-CSP 202206-2 寻宝!大冒险! C语言 满分

这世上总有人在忙忙碌碌寻宝藏

qq_61307378的博客 1686

【AI深究】合成数据(Synthetic Data)深度解析:原理、算法与工程实践——全网最详细流程|核心原理、主流方法、数学表达、工程实践与细节、未来趋势|GAN、VAE、语言模型LLM合成如GPT

大家好,我是爱酱。本篇延续将会系统梳理合成数据(Synthetic Data)的核心原理、主流方法、数学表达、工程实践与未来趋势,结合数学公式,帮助你全面理解这一AI建模的关键技术。 注:本文章含大量数学算式、详细例子说明及大量代码演示,大量干货,建议先收藏再慢慢观看理解。新频道发展不易,你们的每个赞、收藏跟转发都是我继续分享的动力!

AI人工智能爱酱~你的AI学习好帮手~ 4919

CSP 202206-2 寻宝!大冒险!C/C++满分题解

3.分别将绿化图中每一棵树的坐标(x,y)作为(0,0)点,其它树的坐标(xx,yy)对应藏宝图中坐标(xx-x,yy-y)。2.统计藏宝图中树的棵树sum,在进行区域比对前,判断该区域树的数量是否等于sum,不等的话直接跳过该区域。1.绿化图坐标边界太大,不能直接用矩阵表示,可以用一个二维数组存储有树坐标的x,y值。4.接着遍历藏宝图中每一个点,根据是否有树进行讨论判断。

小瑾的博客 1058

Apple CarPlay Certification Guide December 2022 解析V1.0

Apple CarPlay Certification Guide December 2022更新说明

m0_74450450的博客 703

Oracle EBS订单的流程(Order->AR)

基本流程创建订单路径:Order Management > Orders,Returns > Sales Orders填写订单头信息,客户,订单类型,销售人员填写订单体信息,输入物料,数量...然后Book Order,订单Book之后,你会发现订单头的Status的状态变成了“Booked”,订单行的状态为"Awaiting Shipping",记录下来你的订单号,后边的每一步都需要这个订单号。

田攀的日志 4万+

CCF CSP 202206-2寻宝大冒险[带注释满分]

【代码】CCF CSP 202206-2寻宝大冒险[带注释满分]

Brienz 502

微信小程序、H5微信公众号网页JSAPI:解决报错requestMerchantTransfer:fail:internal error(使用wx.requestMerchantTransfer错误)

如何解决requestMerchantTransfer:fail:internal error,微信小程序wx.requestMerchantTransfer报错,微信公众号H5网页使用jssdk调用wx.requestMerchantTransfer报错,JSAPI调起用户确认收款报错errMsg:“requestMerchantTransfer:fail:internal error“,微信小程序/H5 调起确认收款界面,JSAPI调起用户确认收款,微信公众号(H5),用户发起提现,商家转账给用户,用户

✅ 精选推荐文章 4963

CCF- CSP 202206-2寻宝!大冒险!非暴力算法满分题解

将所有绿地的树木坐标用数组存储,再遍历所有树木(将每个绿地树木视为藏宝图的0,0位置),全部符合则累加。

qq_63358202的博客 453

【华为OD机试真题】459、小扇和小船的数字游戏、数字游戏 | 机试真题+思路参考+代码解析(CD卷)(C++、Java、Py)

### 🎃题目描述 >小扇和小船今天又玩起来了数字游戏,小船给小扇一个正整数 n(1  现在求 m 的最小值

KJ.JK 1717

MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍

MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍 (1)输入参数:无 (2)输出参数:Xr和Yr是小车当前在世界坐标系下的坐标 (3)主要作用:作为ROS与MATLAB的通讯接口,从ROS中订阅小车当前的位置信息,并输出 (4)内部结构: (5)具体实现过程:通过ROS工具箱中的Subscribe模块从ROS中订阅话题/gazebo/link_statesa 通过Bus Selector模块选择ROS总线中的Pose

慕羽★的博客 2699

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

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

m0_52193374的博客 932

28-Halcon-- union_object_model_3d函数功能(用于3D模型融合)

Halcon算子union_object_model_3d是专业的3D模型融合工具,主要用于多视图拼接、部件组装和多源数据融合。该算子支持点云、网格和参数化模型输入,提供多种融合算法选择,包括基础点云拼接('points_cloud')、网格融合('mesh')和精确CAD布尔运算('cad')。工业应用涵盖逆向工程扫描拼接、汽车部件虚拟装配等场景,支持性能优化如空间分区和流式处理。算子还解决颜色属性融合、法向量保留等特殊需求,并提供拼接误差分析、拓扑验证等质量评估手段。最佳实践包含动态场景重建工作流和CA

weixin_45590420的博客 1054

csp202206-2寻宝!大冒险!(100‘)

边界处理的时候千万注意,藏宝图超出全图范围也要排除在外,一开始没考虑这个只拿了80分。

m0_74274735的博客 528

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

csp----寻宝!大冒险!

思路和注释都在代码中,欢迎不会的小伙伴留言~

m0_67717626的博客 1073

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ccf csp寻宝!大冒险!(C语言)

ccf csp寻宝!大冒险!

m0_59304732的博客 1986

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

上一篇: 365天挑战LeetCode1000题——Day 041 二分查找完结纪念 + 第 N 个神奇数字 + 在线选举
下一篇: Effective C++ 阅读笔记 02:构造/析构/赋值运算
ShowM3TheCode
博客等级 码龄5年 29粉丝 173原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值