1. 程式人生 > 其它 >洛谷P3613 【深基15.例2】寄包櫃

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

題目連結: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; }