警示后人(如果你RE)
查看原帖
警示后人(如果你RE)
1718117
Liuyx06楼主2025/8/3 17:58

如果你用数组,看看自己有没有看错数据范围,n2×106n \le 2 \times 10 ^ 6,得开到 20000052000005

如果你用的是 vector,建议好好看看教材,vector 默认长度为 00,读入时把:

for(int i = 1; i <= n; i++){
    cin >> a[i]; // 或 scanf("%d", &a[i]);
}

换成:

for(int i = 1; i <= n; i++){
    int tmp;
    cin >> tmp; // 或 scanf("%d", &tmp);
    a.push_back(tmp);
}

注意,vector 下标同样从 0 开始,这样写的话,输出要写 a[p - 1](p 是查询的序号)。

可以提前塞一个无关数据占位,使下标与序号一一对应。

2025/8/3 17:58
加载中...