题目描述

输入
5 4
1 3 10000 114514
1 1 1 1
2 3 10000
2 1 1
输出样例
114514
1
整体思路
这道题首先想到的就是用二维数组,但1e5*1e5必然会导致空间爆炸而且还会有大量的空间浪费。所以就自然而然的想到了动态数组(链表查询次数过多会导致超时)
vector解法
首先介绍vector的解法
- 构造一个结构体,分别存储i,j,k
struct Node
{
int s = 0;//柜子使用的次数,一个柜子可能使用很多次
vector<int> v;//一个柜子的格子数
vector<int> num;//v格子存放的物品
}a[N];
- 如何存储i,j,k
cin >> i >> j >> k;
a[i].s++;//存入第i个柜子
a[i].v.push_back(j);//第i个柜子的第j个格子
a[i].num.push_back(k);//存放的物品
- 如何查询第i个柜子的第j个格子存放的物品
for(int i = a[b].s - 1; i >= 0; i--)
{
if(a[b].v[i

该博客详细解析了洛谷P3613题目的解决方案,针对寄包柜问题提出使用vector和map两种数据结构的解法。在避免二维数组导致的空间浪费情况下,通过动态数组vector和一维、二维映射map实现高效查询。文章提供了完整的代码示例,展示如何存储和查询物品位置。
最低0.47元/天 解锁文章
&spm=1001.2101.3001.5002&articleId=108302468&d=1&t=3&u=6cf775761ae443b0bc89d3e93093841c)
250

被折叠的 条评论
为什么被折叠?



