【深基15.例2】寄包柜

题目链接https://www.luogu.com.cn/problem/P3613

 1 #include <iostream>
 2 #include <vector>
 3 using namespace std;
 4 const int MAX = 100005;
 5 struct node
 6 {
 7     //s用来记录desk[i]的元素个数,表示第i个柜子已存s次物品 
 8     //num表示第i个柜子的第num个格子存入一个物品
 9     //w表示该格子存入的物品 
10     vector<int> num,w;//用vector动态数组节省内存,以防MLE 
11     int s = 0;
12 } desk[MAX];
13 int main()
14 {
15     int n,q;
16     cin>>n>>q;
17     while(q--)
18     {
19         int x,a,b,c;
20         cin>>x;
21         if(x == 1)
22         {
23             cin>>a>>b>>c;
24             desk[a].s++; //第a个柜子存入物品
25             desk[a].num.push_back(b);//第b个格子中 
26             desk[a].w.push_back(c);//存入物品c 
27         }
28         else
29         {
30             cin>>a>>b;
31             for(int i = desk[a].s - 1;i >= 0;i--)//从后往前,因为格子存放会有更新 
32             {
33                 if(desk[a].num[i] == b)//如果查询到该柜子的格子 
34                 {
35                     cout<<desk[a].w[i]<<endl;//输出该格子内的物品 
36                     break;//因此时是最新的存放情况,所以有解后需要直接退出查询 
37                 }
38             }
39         }
40     } 
41     return 0;
42 }
原文地址:https://www.cnblogs.com/tflsnoi/p/13495116.html