洛谷P3613 【深基15.例2】寄包櫃
阿新 • • 發佈:2022-03-16
題目連結:https://www.luogu.com.cn/problem/P3613;
首先用想到的是二維陣列,其實我的第一感覺也是二維陣列,但是很不幸,資料範圍太大絕對會導致程式爆掉,導致MLE,所以保險的做法是STL中的map和vector做法
這裡只介紹vector做法:
#include<bits/stdc++.h> using namespace std; int n,q; struct node { //用二維陣列必炸,因為資料範圍太大了 vector<int >l;//表示第l個格子存入物品 vector<int >s;//表示該格子存入的物品int cnt=0;//表示該已存過cnt次物品 }guizi[100010]; int main() { ios::sync_with_stdio(false); cin>>n>>q; while(q--) { int a,b,c,d; cin>>a; if(a==1) { cin>>b>>c>>d; guizi[b].cnt++;//存cnt次 guizi[b].l.push_back(c);//放入c格子 guizi[b].s.push_back(d);//存物品d } else { cin>>b>>c; for(register int i=guizi[b].cnt-1;i>=0;i--)//從後往前,因為格子存放會有更新 { if(guizi[b].l[i]==c)//如果查詢到該櫃子的格子 { cout<<guizi[b].s[i]<<endl;//輸出物品 break;//因此時是最新的存放情況,所以有解後需要直接退出查詢 } } } } return 0; }