4510. 寻宝!大冒险!
Powered by:NEFU AB-IN
Link
文章目录
- 4510. 寻宝!大冒险!
- 题意
- 思路
- 代码
4510. 寻宝!大冒险!
题意
第26次CCF计算机软件能力认证
题目略
简短版:有一个LxL的大正方形和SxS的小正方形,大正方形中有部分打上1标记的点,SxS保证左下角一定是1,问在大正方形中能找到小正方形有多少种可能思路
思路都是一样的,因为L太大了,不能对应到二维数组,所以还是枚举被标记的点,然后根据小正方形的各个点的偏移量和01情况,挨个进行对应即可
但此题的时限开的比较小,会出现一些问题:- 我一开始想的是用Python的思维,用二维结构体当做key进行标记和遍历
- 但unordered_map 没有针对pair的哈希函数,所以不能用unordered_map,得用map
- 然而这么做,思路是对的,但是pair的存取耗时量太大,会导致TLE
- 所以可以改成将二维转成一维,进行坐标的标记
- 具体怎么转,可以取一个比1e9大的质数作为模数,类似于,
x*N+y
,这样的话需要开long long,就可以再用unordered_map了 - x和y的原值可分别用,除余和取余操作得到
- 具体怎么转,可以取一个比1e9大的质数作为模数,类似于,
- 另外,我们最后需要遍历哈希表,进行坐标读取,判断是否和小正方形的01条件对应
- 但是如果这么写
f != st[fc(x, y)]
st默认会开一个键值对,而且优先级大于你之前存的键值对,也就是说,在你auto进行遍历时,下一个会遍历这个键值对,这不是我们需要的 - 所以应该这么写,
f != (int)st.count(fc(x, y))
,用count判断是否存在过,这样不会瞎开键值对
- 但是如果这么写
- 另外,开臭氧优化,会快很多!
- 我一开始想的是用Python的思维,用二维结构体当做key进行标记和遍历
代码
/* * @Author: NEFU AB-IN * @Date: 2023-01-17 11:40:21 * @FilePath: \Acwing\4510\4510.cpp * @LastEditTime: 2023-01-17 14:30:33 */ // #pragma GCC optimize(1) // #pragma GCC optimize(2) //先开优化 // #pragma GCC optimize(3, "Ofast", "inline") #include <bits/stdc++.h> using namespace std; #define int long long #undef int#define SZ(X) ((int)(X).size()) #define ALL(X) (X).begin(), (X).end() #define IOS \ios::sync_with_stdio(false); \cin.tie(nullptr); \cout.tie(nullptr) #define DEBUG(X) cout << #X << ": " << X << '\n' typedef pair<int, int> PII;const int N = 1e9 + 7, INF = 0x3f3f3f3f; int n, L, S;struct sa {int x, y, f; };unordered_map<long long, int> st; vector<sa> rec;signed main() {auto fc = [&](int x, int y) { return 1LL * x * N + y; }; //转换函数scanf("%d%d%d", &n, &L, &S);for (int i = 1; i <= n; ++i){int x, y;scanf("%d%d", &x, &y);st[fc(x, y)] = 1;}for (int i = 0; i < S + 1; ++i){for (int j = 0; j < S + 1; ++j){int flag;scanf("%d", &flag);rec.push_back({S - i, j, flag}); // 更换坐标}}int ans = 0;for (auto &[t, _] : st){auto xs = t / N, ys = t % N;int flag = 1;for (auto &[xp, yp, f] : rec){int x = xs + xp;int y = ys + yp;if (x < 0 || x > L || y < 0 || y > L || f != (int)st.count(fc(x, y))){flag = 0;break;}}ans += flag;}printf("%d", ans);return 0; }
4510. 寻宝!大冒险!相关推荐
- CSP 202206 题解:归一化处理,寻宝大冒险,角色授权,光线追踪,PS无限版
试题内容请前往CCF官网查看: CCF-CSP计算机软件能力认证考试 http://118.190.20.162/home.page 阅读本题解前,您应当了解下列知识: 线段树 教程 C++ 标准库( ...
- ccfcsp 202206-2 寻宝大冒险
问题描述 就是这个题,输入与输出格式不再罗列,题目目的大概意思为:给定一个小的地图B,在一个大的地图A中找到B,也就是B是A的子图,求有几个这样的子图. ccf的第二题给定的限制时间和空间都很大,所以 ...
- 2022-6-2寻宝大冒险(不用前缀和与map,c/c++实测满分)
总结: 离散点对应回稀疏矩阵时可以分块处理,根据限制条件筛选掉不必处理的块,缩短计算时间. 一.题目要求 题目背景 暑假要到了.可惜由于种种原因,小 P 原本的出游计划取消.失望的小 P 只能留在西西 ...
- ccf寻宝!大冒险!python满分(敲开心~)
寻宝 大冒险 题目传送:http://118.190.20.162/view.page?gpid=T147 思路及代码: 核心点就是哈希. 之前刷的是70分,找不到之前的代码了,大概是建了一个很大的表 ...
- 【寒假每日一题】AcWing 4510. 寻宝!大冒险!
目录 一.题目 1.原题链接 2.题目描述 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 一.题目 1.原题链接 4510. 寻宝!大冒险! - AcWing题库 2.题目描述 暑假要到了 ...
- CSP 寻宝!大冒险! C++
CSP 寻宝!大冒险! C++ 思路:遍历绿化图的每个树,先判断藏宝图里树的数量和当前树的右上边长为s的正方形的树的数量是否一致,如果一致,再循环遍历判断是否相等. #include<bits/ ...
- ccf csp寻宝!大冒险!(C语言)
ccf csp寻宝!大冒险! 题目背景 暑假要到了.可惜由于种种原因,小 P 原本的出游计划取消.失望的小 P 只能留在西西艾弗岛上度过一个略显单调的假期--直到-- 某天,小 P 获得了一张神秘的藏 ...
- ~1 ccf 2022-06-2 寻宝!大冒险!
寻宝!大冒险! 题目描述 输入 输出 样例输入 样例输出 子任务 源代码 关于这题 题目描述 输入 输出 样例输入 样例一: 5 100 2 0 0 1 1 2 2 3 3 4 4 0 0 1 0 1 ...
- CCF- CSP 202206-2寻宝!大冒险!暴力算法满分题解
CCF- CSP 202206-2寻宝!大冒险!暴力算法满分题解 题目链接:202206-2寻宝!大冒险! 思路: 数据范围中n ≤ \leq ≤ 1000,S ≤ \leq ≤ 50,考虑时间复杂度 ...
最新文章
- 谈谈Java接口Result设计
- java 字母图形_Java字母图形
- 利用js对页面数据进行排序
- 面试官问的hibernate和mybatis常见面试题
- git提交代码到github时出现everything up-to-date,但是代码没有上传成功
- rust(34)-Rust and WebAssembly(2)
- Qt Creator指定代码样式设置
- 拷贝的代码中去除行号的方法
- LeetCode 771. 宝石与石头
- 出现次数超过一半的数(信息学奥赛一本通-T1186)
- 动态添加Html单元格时,事件怎么写?如mouseover事件
- mysql 转ascii_MySQL ascll()函数
- android vulkan 游戏,王者荣耀Vulkan版
- 隔空投送怎么用「详细教程」
- 【mosek.fusion】Primal SVM
- 全球知名开源项目与组织齐聚!——峰会【开源开放 生态共建】论坛来啦
- 最新 | 诺奖得主涉嫌论文造假
- 【Java定时器】每天凌晨12点执行一次
- C. Edgy Trees---(思维题+并查集的运用)---Codeforces Round #548 (Div. 2)
- The server quit without updating PID file解决方法
热门文章
- jbe 可以用来修改Java class的字节码,配合jd-gui 使用
- C++ placement new 用法
- bootbox.js bootbox.promt()
- Jmeter报错Couldn‘t save test plan to file
- 计算机弹音乐薛之谦的歌曲,薛之谦 万能音符(The Key) 薛之谦歌曲,薛之谦mp3在线试听 - 5nd音乐网...
- Fiddler爬取抓包(网页及小程序包)
- python 会计分录模板_常见会计分录大全(15种小企业模板)
- mac 下使用ssh
- OGL纹理之纹理过滤器和多级渐进纹理mipmap
- 天池比赛——Docker基础镜像搭建,容器导出镜像