寄包柜
看了不少洛谷的题解,基本都是用了STL解决此题
考虑到内存问题,想到哈希
#include <algorithm>
#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int HASH = 211,N = 3e7 + 10;
int a[N],n,q,opt,x,y,z;
inline int read()
{
int x=0,w=1; char c=getchar();
while (c>'9'||c<'0') {if (c=='-') w=-1; c=getchar();}
while (c<='9'&&c>='0') {x=(x<<1)+(x<<3)+c-'0'; c=getchar();}
return w*x;
}
int main()
{
n=read(); q=read();
while (q--)
{
opt=read();
if (opt==1) {
x=read(); y=read(); z=read();
a[x*HASH+y*19]=z;
}
else {
x=read(); y=read();
printf("%d\n",a[x*HASH+y*19]);
}
}
return 0;
}
第一次下标只加了y,20分,被hack掉了
第二次y乘了19,AC

浙公网安备 33010602011771号