dreamtouch @ 2022-08-26 23:22:38
https://www.luogu.com.cn/record/85159090 \ 这个能过
https://www.luogu.com.cn/record/85159077\ 这个只过了一个
区别只在于两次代码的数组大小不同 (请忽略前面的注释部分)
by HeCao2008 @ 2022-08-27 00:28:11
lz,我看不到代码诶
by HeCao2008 @ 2022-08-27 00:28:38
@dreamtouch 大概率,大概率是数组,我看不到代码无法评价
by CH_mengxiang @ 2022-08-27 09:50:49
如果你的数组大小指的是定义时方框里写的数的话。。。
举个栗子:数组开100意味着在Linux(现在评测机一般都是Linux系统)下只能访问0-99,访问100+会出错(运行时错误Runtime Error,RE),叫做访问越界。数组开小了导致访问越界就会出现这种情况。
by dreamtouch @ 2022-08-27 13:19:25
@PRC_Dreamwastaken 不是越界,re的那个代码数组更大
by dreamtouch @ 2022-08-27 13:23:04
#include<iostream>
#include<ctime>
using namespace std;
long long p = 11000000021;//大质数,超过100000*100000+100000
long long a = -1, b = -1;//全域函数的参数,暂时设为-1
long long first[100001];//first[i]表示哈希值为i的数据构成的链表的首位
int sum;//sum用作累计哈希表list的存放位置
struct contain {
long long k, x, next;//k是卫星数据,x是查找的关键字,next是链表的下一个位置
}list[100001];
long long haxi(long long x) {//全域函数
if (a == -1) {//如果是第一次调用,则随机设定全域函数参数的值
srand(time(0));
a = 1.0 * rand() / RAND_MAX * p;
b = 1.0 * rand() / RAND_MAX * p;//其实可能随机得不太好
}
return ((a * x + b) % p) % 100000;
}
void put_haxi(long long X,long long K) {
long long h = haxi(X);
sum++;
if (!first[h]) {
first[h] = sum;
list[sum].k = K;
list[sum].x = X;
return;
}
long long pos = first[h];
while (list[pos].next) {
if (list[pos].x == X) {
list[pos].k = K;
return;
}
pos = list[pos].next;
}
if (list[pos].x == X) {
list[pos].k = K;
return;
}
list[pos].next = sum;
list[sum].k = K;
list[sum].x = X;
return;
}
long long search(long long X) {
long long h = haxi(X);
long long pos = first[h];
while (list[pos].next){
if (list[pos].x == X) {
return list[pos].k;
}
pos = list[pos].next;
}
if (list[pos].x == X) {
return list[pos].k;
}
return -1;
}
int main() {
long long N, Q;
cin >> N >> Q;
long long a, I, J, K;
for (long long i = 1; i <= Q; i++) {
cin >> a >> I >> J;
if (a == 1) {
cin >> K;
put_haxi(100000 * I + J, K);
}
else {
cout << search(100000 * I + J)<<"\n";
}
}
return 0;
}
这个是ac代码,但把数组扩大10倍后只有一个点过
by 心灵震荡 @ 2022-12-08 17:07:15
@dreamtouch tlqtj,jbl
by Tx1234567 @ 2023-01-12 20:17:04