zoukankan      html  css  js  c++  java
  • 洛谷 P3396 哈希冲突 解题报告

    P3396 哈希冲突

    题目背景

    此题约为NOIP提高组Day2T2难度。

    题目描述

    众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。

    B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。

    自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。

    B君会给定许多个p和x,询问在模p时,x这个池内数的总和。

    另外,B君会随时更改value[k]。每次更改立即生效。

    保证1<=p<n1<=p<n.

    输入输出格式

    输入格式:

    第一行,两个正整数n,m,其中n代表序列长度,m代表B君的操作次数。

    第一行,n个正整数,代表初始序列。

    接下来m行,首先是一个字符cmd,然后是两个整数x,y。

    若cmd='A',则询问在模x时,y池内数的总和。

    若cmd='C',则将value[x]修改为y。

    输出格式:

    对于每个询问输出一个正整数,进行回答。

    数据规模

    对于10%的数据,有n<=1000,m<=1000.

    对于60%的数据,有n<=100000.m<=100000.

    对于100%的数据,有n<=150000,m<=150000.

    保证所有数据合法,且1<=value[i]<=1000.


    分块是一种非常神奇的东西

    注意到我们模数越大,则询问时进行加和的次数就越少

    则我们可以以(sqrt n)为界

    模数比它大的暴力询问,模数比它小的存起来

    (dp_{i,j})表示在(mod i)意义下余(j)的总和

    修改的时候暴力改就可以了


    Code:

    #include <cstdio>
    const int N=1e5+5e4+10;
    int a[N],dp[400][400],n,m;
    int main()
    {
        scanf("%d%d",&n,&m);
        for(int i=1;i<=n;i++)
        {
            scanf("%d",a+i);
            for(int j=1;j*j<=n;j++)
                dp[j][i%j]+=a[i];
        }
        char op[3];
        for(int x,y,i=1;i<=m;i++)
        {
            scanf("%s%d%d",op,&x,&y);
            if(op[0]=='A')
            {
                if(x*x<=n)
                    printf("%d
    ",dp[x][y]);
                else
                {
                    int sum=0;
                    for(int j=y;j<=n;j+=x)
                        sum+=a[j];
                    printf("%d
    ",sum);
                }
            }
            else
            {
                for(int j=1;j*j<=n;j++)
                    dp[j][x%j]+=y-a[x];
                a[x]=y;
            }
        }
        return 0;
    }
    
    

    2018.9.18

    勿忘国耻,振兴中华!

  • 相关阅读:
    正则表达说明—Pattern API
    C#调用dll(Java方法)
    获取页面URL两种方式
    可拖动布局之jQueryUI
    可拖动布局之Gridster
    Thymeleaf入门基础
    Eclipse安装反编译插件
    Spring Boot:Consider defining a bean of type '*.*.*' in your configuration解决方案
    Spring Boot : Whitelabel Error Page解决方案
    MYSQL卸载
  • 原文地址:https://www.cnblogs.com/butterflydew/p/9670313.html
Copyright © 2011-2022 走看看