使用C++的CCF-CSP满分解决方案 202206-2 寻宝!大冒险!点集
解题思路
这题如果用二维矩阵肯定会超标,因为样例保证n<=109n <= 10^9n<=109,所以考虑用点集来处理。
- 读入所有的树的位置,每个位置用一个pair来记录
- 记录每个可能的左下角——其实也就是树的位置——对应的藏宝图范围覆盖了多少棵树
- 读入藏宝图中树的位置和个数
- 对于每颗绿化图中的树,检查树的个数与藏宝图是否一致,检查树的位置与藏宝图是否一致,二者均符合则答案加一
- 输出答案
满分代码实现
#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;
}
使用C++的CCF-CSP满分解决方案 202206-2 寻宝!大冒险!点集相关推荐
- CSP 202206 题解:归一化处理,寻宝大冒险,角色授权,光线追踪,PS无限版
试题内容请前往CCF官网查看: CCF-CSP计算机软件能力认证考试 http://118.190.20.162/home.page 阅读本题解前,您应当了解下列知识: 线段树 教程 C++ 标准库( ...
- 2022-6-2寻宝大冒险(不用前缀和与map,c/c++实测满分)
总结: 离散点对应回稀疏矩阵时可以分块处理,根据限制条件筛选掉不必处理的块,缩短计算时间. 一.题目要求 题目背景 暑假要到了.可惜由于种种原因,小 P 原本的出游计划取消.失望的小 P 只能留在西西 ...
- CCF CSP认证考试在线评测系统
关于CCF CSP认证考试在线评测系统 CCF CSP认证考试简介 CCF是中国计算机学会的简称.CCF计算机软件能力认证(简称CCF CSP认证考试)是CCF于2014年推出,是CCF计算机职业资格 ...
- 计算机能力挑战赛_蓝桥杯、PAT、CCF CSP、团体程序设计天梯赛、传智杯、计算机能力挑战赛、软考等大学生编程比赛/考试介绍...
介绍7个适合普通大学生参加的编程比赛/考试(注:有的比赛如蓝桥杯有多种赛别,本文仅介绍其中的程序设计/编程比赛). 编程入门书籍推荐<算法笔记>,内容详细易懂,对新手非常友好,描述语言为C ...
- CCF CSP认证菜鸟刷题日志
CCF CSP菜鸟刷题日志(c/c++) 本萌新写给自己看的,要是有大佬路过,请多多指教orz 立个flag:每日一更,至201903 9月15ccf csp,冲鸭! 今天(2019.8.18)起每天 ...
- 北航ccf计算机软件能证排名前18%,CCF成功举办第十一次CCF CSP认证
第十一次CCF CSP计算机软件能力认证(CSP)于2017年9月17日在全国66所院校举办,这是2017年度CCF举办的第二次认证,来自全国200多个单位的6591人参加了本次认证.通过对本次CSP ...
- ccf csp认证考试的历年题集汇总
1.CCF历年试题解答_按题序 2.CCF认证考试题解目录 3.CCF CSP入坑指南 4.ccf 认证历年试题解答 5.CCF认证历年真题 _无题意 6.CCF-CSP认证备考要点 6.CCF认证历 ...
- CCF CSP 201812-2 小明放学 解题思路及经验总结
更新:多谢weixin_44714465同学指出我的错误[详见49-52行代码,已改正!].CCF CSP的OJ居然没有把这个错误检测出来,不过为了追求严谨,我们还是应该及时改正! 题目描述 试题编号 ...
- CCF CSP 201609-2 火车购票
题目链接:http://118.190.20.162/view.page?gpid=T46 问题描述 请实现一个铁路购票系统的简单座位分配算法,来处理一节车厢的座位分配. 假设一节车厢有20排.每一排 ...
- 以CCF CSP认证为抓手,积极探索软件基础能力递进式培养体系
原文链接:以CCF CSP认证为抓手,积极探索软件基础能力递进式培养体系 发布单位:学会 发布时间:2017-01-20 16:16 作者:陆建峰 余立功 摘要:为提升计算机专业类学生 ...
最新文章
- VS2010创建ATL类时需要手动填写ProgID
- 一道经典面试题讲解 :数组越界而没报错 ,却出现死循环 ?(C语言)
- 超全大厂Java面试彩蛋
- Waymo无人卡车高调重返凤凰城,但货运先机已失
- 温故知新 javascript 正则表达式
- es6学习 -- 解构赋值
- 第五届[2013年]全国大学生数学竞赛[数学类]试题六参考解答
- BZOJ3133[Baltic2013]ballmachine
- 面试常考的数据结构Java实现
- 关于SQL2012里,出现“表中的数据受保护,不能修改”的情况的解决办法
- security工作笔记004---.NET Web安全性-身份验证和授权(一)之Principal
- 【机房收费系统】--SSTab控件与MSHFlexGrid控件
- Android项目实战(三十一):异步下载apk文件并安装(非静默安装)
- 解释HTTP中Get和Post。它们有什么区别,哪个使用时更加安全?
- jhipster初接触
- Adobe Illustrator for Mac 2020 24.0.1版 — 矢量绘图工具
- 宽带波束形成 matlab,关于均匀圆阵MVDR宽带波束形成的程序
- Matlab实现指纹去噪增强
- 网页在线视频下载教程(m3u8格式介绍及下载教程)
- PMP——项目管理介绍
热门文章
- fork 循环创建多个子进程
- Python全栈(十)Django框架之10.ORM模型对象和QuerySet方法
- es6 javascript的字符串对象新增团员方法
- vid 和pvid的区别
- mysql 日期查询下周,MySQL时间函数的使用:查询本周、下周、本月、下个月份的数据【转】...
- 乐鑫M5GO自制睡眠小助手!新手。。。轻打脸
- python刷题一亩三分地_一亩三分地
- 【点云处理之论文狂读前沿版6】Surface Representation for Point Clouds
- 迷宫问题 深度优先搜索 广度优先搜索 宽度优先搜索【python】
- js添加多marker 高德地图_高德地图点聚合--Marker多点聚合及多个marker点击事件