毒贩打架了
2026-09-09 20:28:54
发布于:浙江
rt.

然后我们可以学习 P3396 哈希冲突 了。
明显的根号分治,主要是由于暴力必然T飞想到的。
先给不太明白的说下,根号分治就是类似于把区间分成几段,小的区间做预处理,大的暴力写。
我们先要注意到 ,然后我们开一个数组来进行预处理小的区间,把模数 从 遍历到 把 val[i] 加到 f[p][i%p] ( 数组为预处理数组)里,这样查询的时候就可以做到 。
修改时还要改小模数的元素值,我们先算变化量 bi=newv-val[pos] ,再遍历 数组更新就行。
修改时复 ,大概就是 的量。
总时间复杂度 。
const int maxn=150005;
const int b=400;
int val[maxn];
int f[b+5][b+5];
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin>>n>>m;
for(int i = 1;i<=n;i++)
{
cin>>val[i];
for(int p = 1;p<=b;p++)
{
f[p][i%p]+=val[i];
}
}
while(m--)
{
char op;
int x, y;
cin>>op>>x>>y;
if(op=='A')
{
if(x<=b) cout<<f[x][y]<<'\n';
else
{
long long sum=0;
for(int k = y;k<=n;k+=x) sum+=val[k];
cout<<sum<<'\n';
}
}
else //if(op=='C')
{
int de=y-val[x];
val[x]=y;
for(int p = 1;p<=b;p++) f[p][x%p]+=de;
}
}
}
全部评论 2
那完了,我是最弱的了
2026-09-10 来自 浙江
0先把J打完再P
2026-09-10 来自 浙江
0我过不了初赛信不信
2026-09-10 来自 浙江
0不信
2026-09-11 来自 浙江
0
哈希冲突是毒贩打架了。
2026-09-09 来自 浙江
0

















有帮助,赞一个