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;
}