P3396 哈希冲突

Posted shxnb666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了P3396 哈希冲突相关的知识,希望对你有一定的参考价值。

题面

https://www.luogu.org/problem/P3396

题解

#include<cstdio>
#include<iostream>
#define ri register int
using namespace std;
int n,m;
int a[150050];
int ans[450][450];
char ch;
int main()
  scanf("%d %d",&n,&m);
  for (ri i=1;i<=n;i++) 
    scanf("%d",&a[i]);
    for (ri j=1;j<=400;j++) ans[j][i%j]+=a[i];
  
  int x,y;
  for (ri i=1;i<=m;i++) 
    ch=getchar();
    while (ch!=A && ch!=C) ch=getchar();
    scanf("%d %d",&x,&y);
    if (ch==A) 
      if (x>400) 
        int sum=0;
        y%=x;
        for (ri j=y;j<=n;j+=x) sum+=a[j];
        printf("%d\n",sum);
      
      else 
        printf("%d\n",ans[x][y]);
      
    
    else 
      for (ri j=1;j<=400;j++) ans[j][x%j]-=a[x];
      a[x]=y;
      for (ri j=1;j<=400;j++) ans[j][x%j]+=a[x];
    
  

 

以上是关于P3396 哈希冲突的主要内容,如果未能解决你的问题,请参考以下文章

P3396 哈希冲突

P3396 哈希冲突

P3396 哈希冲突 (根号算法)

p3396 哈希冲突(暴力)

P3396 哈希冲突

P3396 哈希冲突 根号分治模板题