P3396 哈希冲突
Posted qyj060604
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3396 哈希冲突相关的知识,希望对你有一定的参考价值。
P3396 哈希冲突
比较巧妙的根号算法
将询问分成两类:模数<=len和>len的
对于第一类,开一个桶记录
对于第二类,暴力
时间复杂度(n+m)√n
代码:
#include<bits/stdc++.h> using namespace std; const int N=150005; const int M=400; int n,m; int a[N]; int len; int value[M][M]; inline void insert(int pos,int x) for(int i=1;i<=len;i++) value[i][pos%i]+=x; int main() scanf("%d%d",&n,&m); len=sqrt(n); for(int i=1;i<=n;i++) scanf("%d",&a[i]),insert(i,a[i]); for(int i=1;i<=m;i++) char c; int x,y; cin>>c; scanf("%d%d",&x,&y); if(c==‘A‘) if(x<=len) printf("%d\n",value[x][y]); else int ans=0; for(int i=y;i<=n;i+=x) ans+=a[i]; printf("%d\n",ans); else insert(x,-a[x]); insert(x,y); a[x]=y; return 0;
以上是关于P3396 哈希冲突的主要内容,如果未能解决你的问题,请参考以下文章