社区讨论

求助神秘灵异事件

学术版参与者 10已保存回复 11

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
10 条
当前快照
1 份
快照标识符
@mjk3lcpj
此快照首次捕获于
2025/12/24 22:17
2 个月前
此快照最后确认于
2025/12/27 10:55
2 个月前
查看原帖
CPP
std::vector<int>A[1000010];
std::vector<pii>F[400000],Q[400010];
void solve(){
  int n,q;read(n),read(q);
  rep(i,1,n){
    int x;read(x);
    for(int j=1;j*j<=x;++j)if(x%j==0){
      if(j!=1)A[j].pb(i);if(j*j!=x)A[x/j].pb(i);
    }
  }
  rep(i,2,1000000)if(A[i].size()>=3){
    int N=A[i].size(),cur=N-1;
    nrep(j,N-3,0){
      if(A[i][cur]-A[i][j+1]<A[i][j+1]-A[i][j])continue;
      while(cur>j+2&&A[i][cur-1]-A[i][j+1]>=A[i][j+1]-A[i][j])--cur;
      F[A[i][cur]].pb(A[i][j],i);
    }
  }
}
这是一段非常简单的代码。题目是https://qoj.ac/contest/1784/problem/9250
但是这个题我一开始交上去RE了。报了一个munmap_chunk(): invalid pointer,我也看不懂是什么东西。
我在最后这个for循环里每一次输出i,发现他会在随机位置炸掉。
但是!!!我把第一行的1000010改成1200010就过了。
有没有懂C++的同学解说一下!!!感谢!!!

回复

11 条回复,欢迎继续交流。

正在加载回复...