萌新求助

P3613 【深基15.例2】寄包柜

haircontain99 @ 2021-08-14 23:06:16

#include <stdio.h>

#define maximum 10000005

typedef struct INFO
{
    int shelf;
    int box;
    int number;
} info;

info infomation[maximum];

int main()
{
    int n, q, i, j, choice, t1, t2;
    scanf("%d %d", &n, &q);
    for (i = 0; i < q; ++i)
    {
        scanf("%d", &choice);
        switch (choice)
        {
        case 1:
            scanf("%d %d %d", &infomation[i].shelf, &infomation[i].box, &infomation[i].number);
            break;
        case 2:
        {
            scanf("%d %d", &t1, &t2);
            for (j = 0; j < maximum; ++j)
            {
                if (infomation[j].shelf == t1 && infomation[j].box == t2)
                {
                    printf("%d\n", infomation[j].number);
                    break;
                }
            }
            break;
        }
        }
    }

    return 0;
}

我就是开数组的想法。

结果是第一个对,后四个WA了。

看不出毛病呀呜呜呜,求助大神们

Thanks♪(・ω・)ノ


by QiaoHongYi @ 2021-08-14 23:18:16

为什么不直接开二维数组来存储数据。。。


by QiaoHongYi @ 2021-08-14 23:41:08

不好意思说错了(

用二维数组的话数组是开不到那么大的


by QiaoHongYi @ 2021-08-14 23:52:30

您这个代码上在存储数据上下标的处理有些问题,而且你这个方法是不行的,因为会超时。


by QiaoHongYi @ 2021-08-14 23:55:11

@haircontain99 您可以用C++的vector(动态数组)或者map(映射),如果要写C的话就要手写哈希或者使用动态分配


by QiaoHongYi @ 2021-08-14 23:55:57

(当然,您卡卡常,吸吸氧,快读,下载数据说不定能卡过去)


by haircontain99 @ 2021-08-15 10:40:48

emmm我再想想

thx


by I_Wanna_AC @ 2022-07-21 17:01:20

可以换成vector或map试逝,因为这题数据太大了,可能会爆

代码附上

#include<bits/stdc++.h>
#include<vector>
using namespace std;
typedef long long ll;
const int N=1e5+2;
vector<int> a[N];
int main(){
    int n,q,b,c,d;
    cin>>n>>q;
    int t,i,j,k;
    while(q--)
    {
        cin>>t;
        if(t==1)
        {
            cin>>i>>j>>k;
            if(a[i].size()<j+1){
                a[i].resize(j+1);
            }
            a[i][j]=k;
        }
        else if(t==2)
        {
            cin>>i>>j;
            cout<<a[i][j]<<endl;
        }
    }
    return 0;
}

|