【题目链接】

洛谷 P3613 【深基15.例2】寄包柜

【题目考点】

1. STL map

2. STL pair

pair<T1, T2> make_pair(T1 a, T2 b);
make_pair函数可以将两个量组合成一个pair类型的对象。

【解题思路】

共有 1 0 5 10^5 105个寄包柜,每个寄包柜最多有 1 0 5 10^5 105格子。
如果每个格子都用一个int类型的变量表示,那么需要声明int a[100000][100000],共 1 0 10 10^{10} 1010个int类型的变量。内存限制128M,最多保存 128 ∗ 1024 ∗ 1024 / 4 ≈ 3 ∗ 1 0 7 128*1024*1024/4\approx 3*10^7 128∗1024∗1024/4≈3∗107个int类型的变量,一定会内存超限。
由于超市中的寄包格子总数不会超过 1 0 7 10^7 107,如果我们可以为每个可能的寄包格子设一个int类型的变量来保存该格子中的物品,这就是可行的。

这里需要用到表示映射的STL map。

解法1:每个柜子是一个map对象,使用map数组

我们可以为每个寄包柜设一个map对象,map中的键为格子编号,值为物品。
设map数组map<int, int> locker[100005]locker[i]表示第i个寄包柜,locker[i][j]表示第i个寄包柜第j个格子中的物品。
由于数据量达到 1 0 5 10^5 105,在主函数内声明会栈溢出,需要将locker声明成全局变量。

解法2:将柜子与格子编号组合成pair对象作为键

由于给定柜子、格子编号后,就能唯一确定一个位置,因此可以将柜子与格子编号合成一个pair类的对象,以这个pair对象作为键,值是物品。这样只需要声明一个map对象:map<pair<int, int>, int> mp;
mp[make_pair(i, j)]为第i个柜子第j个格子中的物品。

【题解代码】

解法1:每个柜子是一个map对象,使用map数组

#include <bits/stdc++.h>
using namespace std;
#define N 100005
map<int, int> locker[N];//locker[i]:第i个寄包柜,locker[i][j]:第i个寄包柜第j个格子中的物品。
int main()
{int n, q, t, i, j, k;cin >> n >> q;while(q--){cin >> t;if(t == 1){cin >> i >> j >> k;locker[i][j] = k;}else//t == 2 {cin >> i >> j;cout << locker[i][j] << endl;}}return 0;
}

解法2:将柜子与格子编号组合成pair对象作为键

#include <bits/stdc++.h>
using namespace std;
int main()
{map<pair<int, int>, int> mp;int n, q, num, i, j, k;cin >> n >> q;while(q--){cin >> num;if(num == 1){cin >> i >> j >> k;mp[make_pair(i, j)] = k;}else{cin >> i >> j;cout << mp[make_pair(i, j)] << endl;}}return 0;
}

洛谷 P3613 【深基15.例2】寄包柜相关推荐

  1. 数组——寄包柜(洛谷 P3613)

    题目选自洛谷P3613 比入门稍微麻烦了一点,该题主要为了理解用vector如何创建二维数组及其引用对应的值. 解题代码: #include<stdio.h> #include<io ...

  2. P3156 【深基15.例1】询问学号(20分)--python3实现

    [深基15.例1]询问学号 - 洛谷 """P3156 [深基15.例1]询问学号(20分)--python3实现 https://www.luogu.com.cn/pr ...

  3. 深入理解 操作系统 LRU算法(以洛谷P1540题为例)

    LRU算法 LeastRecentlyUsedLeast Recently UsedLeastRecentlyUsed 算法,意为"最近最少使用",这是操作系统内存管理部分重要的一 ...

  4. 深入理解 操作系统 SJF算法(以洛谷P1223题为例)

    CPU Scheduling Algorithms 重要的CPU调度算法如下: FCFS Scheduling(First-Come, First-Served) SJF Scheduling(Sho ...

  5. 洛谷P3613 寄包柜

    题目描述 超市里有 n(n\le10^5)n(n≤105) 个寄包柜.每个寄包柜格子数量不一,第 ii 个寄包柜有 a_i(a_i\le10^5)ai​(ai​≤105) 个格子,不过我们并不知道各个 ...

  6. 洛谷P3613 睡觉困难综合征

    传送门 题解 人生第一道由乃-- 做这题之前应该先去把这一题给切掉->这里 我的题解->这里 然后先膜一波zsy大佬和flashhu大佬 大体思路就是先吧全0和全1的都跑答案,然后按位贪心 ...

  7. 【刷题】洛谷 P3613 睡觉困难综合征

    题目背景 刚立完Flag我就挂了WC和THUWC... 时间限制0.5s,空间限制128MB 因为Claris大佬帮助一周目由乃通过了Deus的题,所以一周目的由乃前往二周目世界找雪辉去了 由于二周目 ...

  8. p5727深基5.例3冰雹猜想c语言,深基

    欸嘿,典型的求解第k小的数的问题 算法中使用了快速排序 关键之处在于原本快排需要两边都进行排序,但现在我们只关心第k小的数,所以,如果在ll比k大那么就排左半边,比k小就比右半边,从而实现时间复杂度的 ...

  9. 洛谷【数据结构1-1】线性表

    P3156 [深基15.例1]询问学号 传送门 题目描述 有 n(n≤2×1^6) 名同学陆陆续续进入教室.我们知道每名同学的学号(在 1 到 10^9之间),按进教室的顺序给出.上课了,老师想知道第 ...

最新文章

  1. 通过Dockerfile构建Docker镜像
  2. js如何关闭当前页,而不弹出提示框
  3. CentOS7 安装和配置 mysql5.7
  4. JVM 类加载机制:编译器常量与初始化
  5. [TPYBoard - Micropython之会python就能做硬件 2] 利用micropython控制NOKIA 5110屏
  6. 一道百度前端线上笔试题
  7. mysql操作xml字段_SQL XML 字段操作
  8. Newtonsoft 六个超简单又实用的特性,值得一试 【下篇】
  9. 使用ucontext组件实现的coroutine代码分析
  10. 脚本命令配置mysql_MySQL常用的配置、脚本和命令
  11. Set的5种遍历方式
  12. Debian/Ubuntu Apache Mod_Rewrite 安装
  13. ARMv8-A Exception Levels
  14. 怎么写c++ documentation_球鞋鞋标怎么看真假、有几种 耐克鞋标鉴定方法推荐
  15. 三、实战小例程 基于STM32F103C8T6最小系统板和STM32CubeMX驱动WS2812B光立方
  16. 吃鸡显示连接服务器超时,吃鸡 怎么显示连接超时 | 手游网游页游攻略大全
  17. Java开发人员幽默外号,好听的外号绰号 好听幽默绰号大全
  18. java qua_Qua Vadis Eclipse? 第二部分
  19. Apache 安装详解
  20. (续)SSM整合之springmvc笔记(@RequestMapping注解)(P124-130)

热门文章

  1. 从0到1学数据库:Function函数
  2. 消息验证码-MAC算法总结
  3. EMWIN数字软键盘设计
  4. 抖音品质建设 - iOS启动优化之原理篇
  5. Android获取手机系统软件图标,名称等
  6. 2019最新pc微信hook教程免费分享
  7. GAN属于计算机视觉领域嘛_【图像上色小综述】生成对抗网络的GAN法
  8. 前端大牛吐血分享:如何在 Web 开发中找到第一份工作?
  9. imac关闭窗口图标不见了_Mac图标:50多种免费的高质量iMac,Macbook图标集
  10. 整数数组 nums 按升序排列,旋转后查询某个值