社区讨论
求助神秘灵异事件
学术版参与者 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 条回复,欢迎继续交流。
正在加载回复...