数组

数组,在stl中有一个可变数组vector

vector是一个单口动态数组 ;

迭代器:vector《int》::iterator  it=a.begin();

                a[2];

插入:a.push_back();

删除:a.popBack();

例题:

如果单一个结构数组,那也要 10^5*10^7,肯定会 TLE,所以分开两个 数组,有一个计数君,模拟二维数组;

题目描述

超市里有 n(n≤105)n(nle10^5)n(n105) 个寄包柜。每个寄包柜格子数量不一,第 iii 个寄包柜有 ai(ai≤105)a_i(a_ile10^5)ai(ai105) 个格子,不过我们并不知道各个 aia_iai 的值。对于每个寄包柜,格子编号从 1 开始,一直到 aia_iai。现在有 q(q≤105)q(qle10^5)q(q105) 次操作:

  • 1 i j k:在第 iii 个柜子的第 jjj 个格子存入物品 k(0≤k≤109)k(0le kle 10^9)k(0k109)。当 k=0k=0k=0 时说明清空该格子。
  • 2 i j:查询第 iii 个柜子的第 jjj 个格子中的物品是什么,保证查询的柜子有存过东西。

已知超市里共计不会超过 10710^7107 个寄包格子,aia_iai 是确定然而未知的,但是保证一定不小于该柜子存物品请求的格子编号的最大值。当然也有可能某些寄包柜中一个格子都没有。

输入格式

第一行 2 个整数 n 和 q,寄包柜个数和询问次数。

接下来 q 个整数,表示一次操作。

输出格式

对于查询操作时,输出答案。

输入输出样例

输入 #1
5 4
1 3 10000 114514
1 1 1 1
2 3 10000
2 1 1
输出 #1
114514
1


代码:
#include<iostream>
#include<vector>
#define max 100000
using namespace std;
struct node{
    vector<int> c,v;
    int s=0;
}d[max];
int main(){
    int n,q,ope,i,j,k;
    cin>>n>>q;
    for(int g=0;g<q;g++){
        cin>>ope;
        if(ope==1){
            cin>>i>>j>>k;
            d[i].s ++;
            d[i].c.push_back(j);
            d[i].v.push_back(k);  
        }
        if(ope==2){
            cin>>i>>j;
            int u;
            for( u=d[i].s -1;u>=0;u--){
                if(d[i].c[u]==j){
                    cout<<d[i].v [u]<<endl;
                    break;
                }
            }
            if(u<0)cout<<0<<endl;
        }
    }
}
原文地址:https://www.cnblogs.com/wtx2333/p/12582197.html