P3613. 寄包柜

考点

  • 模拟

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#include <bits/stdc++.h>
using namespace std;

int main()
{
int n, m, opt, i, j, k;
cin >> n >> m;
//初始化,一共0到n号
vector<vector<int>> v(n + 1);
while (m--)
{
cin >> opt;
if (opt == 1)
{
cin >> i >> j >> k;
//如果不够大,就扩容
if (v[i].size() < j)
v[i].resize(j + 1);
v[i][j] = k;
}
else
{
cin >> i >> j;
cout << v[i][j] << endl;
}
}
return 0;
}

思路

由于寄包柜格子数量会改变,所以应该用vector来存放

如果某寄包柜的格子数量不够,直接用vectorresize函数扩容即可

也不需要考虑容量回收,因为题目说了保证查询的柜子有存过东西,哪怕是0也要保留下来