传送门啦

非常神奇的分块大法。

这个题一看数据范围,觉得不小,但是如果我们以 $ \sqrt(x) $ 为界限,数据范围就降到了 $ x < 400 $

我们设数组 $ f[i][j] $ 表示在 % $ i $ 意义下余数是 $ j $ 的数的总和。

然后我们以 $ \sqrt(n) $ 为界限,小于 $ \sqrt(n) $ 的直接调用数组,剩下的暴力查找。修改的话看代码吧,真的不难。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
using namespace std;
const int maxn = 150005; inline int read(){
char ch = getchar();
int f = 1 ,x = 0;
while(ch > '9' || ch < '0'){if(ch == '-')f = -1; ch = getchar();}
while(ch >= '0' && ch <= '9'){x = (x << 1) + (x << 3) + ch - '0';ch = getchar();}
return x * f;
} int n,m,a[maxn],x,y;
char flag;
long long f[390][390];//表示在 %i 意义下 余数是 j 的数的总和 int main(){
n = read(); m = read();
for(int i=1;i<=n;i++){
a[i] = read();
for(int j=1;j<=sqrt(n);j++)
f[j][i % j] += a[i];
}
while(m--){
cin >> flag;
x = read(); y = read();
if(flag == 'A'){
if(x * x <= n)
printf("%lld\n",f[x][y]);
else {
int sum = 0;
for(int j=y;j<=n;j+=x)
sum += a[j];
printf("%d\n",sum);
}
}
else {
for(int j=1;j<=sqrt(n);j++)
f[j][x % j] += y - a[x];
a[x] = y;
}
}
return 0;
}

洛谷P3396哈希冲突的更多相关文章

  1. 洛谷P3396 哈希冲突 (分块)

    洛谷P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣. ...

  2. 洛谷 P3396 哈希冲突 解题报告

    P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣.他会 ...

  3. 洛谷P3396 哈希冲突

    分块还真是应用广泛啊...... 题意:求 解:以n0.5为界. 当p小于n0.5的时候,直接用p²大小的数组储存答案. 预处理n1.5,修改n0.5. 当p大于n0.5的时候,直接按照定义计算,复杂 ...

  4. 洛谷P3396 哈希冲突(分块)

    传送门 题解在此,讲的蛮清楚的->这里 我就贴个代码 //minamoto #include<iostream> #include<cstdio> #include< ...

  5. P3396 哈希冲突(思维+方块)

    题目 P3396 哈希冲突 做法 预处理模数\([1,\sqrt{n}]\)的内存池,\(O(n\sqrt{n})\) 查询模数在范围里则直接输出,否则模拟\(O(m\sqrt{n})\) 修改则遍历 ...

  6. 题解 洛谷 P3396 【哈希冲突】(根号分治)

    根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法--不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种 ...

  7. P3396 哈希冲突

    很好的根号算法(这种思想好像叫根号分治?) 首先,暴力是Ο(n2)的 考虑预处理: for(p=1;p<=n;p++) //枚举模数 ans[p][i%p]+=value[i]; 看似很好但还是 ...

  8. p3396 哈希冲突(暴力)

    想了好久,没想到优秀的解法,结果是个暴力大吃一静.jpg 分类讨论,预处理\(p\le \sqrt{n}\) 的情况,其他直接暴力,复杂度\(O(n \sqrt{n} )\) #include < ...

  9. 【洛谷3950】部落冲突(LCT维护连通性)

    点此看题面 大致题意: 给你一棵树,\(3\)种操作:连一条边,删一条边,询问两点是否联通. \(LCT\)维护连通性 有一道类似的题目:[BZOJ2049][SDOI2008] Cave 洞穴勘测. ...

随机推荐

  1. Android 65535 问题与 MultiDex分包

    Android Multidex 遇到的问题 http://blog.csdn.net/wangbaochu/article/details/51178881 Android 使用android-su ...

  2. Stamp Rally

    Stamp Rally 最大值最小,可以二分,然后并查集看能不能到z个点 但是询问过多,并且发现每次二分要加入的点并不是所有的m条边 于是就考虑整体二分 并查集的处理是重点: 对于一般的dfs分治树, ...

  3. MySQL使用笔记(八)统计函数和分组数据记录查询

    By francis_hao    Dec 17,2016 统计函数数据记录查询 统计函数 统计函数 描述 count() count(*):统计表中记录条数(包括NULL值字段) count(fie ...

  4. git的一些常见问题

    from:http://hi.baidu.com/mvp_xuan/blog/item/2ba062d8cd2c9fc939012fae.html 关于linux上建库等操作请看文章: http:// ...

  5. 报错laravel/horizon v1.4.3 requires ext-pcntl * -> the requested PHP extension pcntl is missing from your system.的解决办法

    执行composer install后报以下错误: Problem 1 - laravel/horizon v1.4.3 requires ext-pcntl * -> the requeste ...

  6. GO_05_2:Golang 中 panic、recover、defer 的用法

     函数 defer 1. 它的执行方式类似其他语言中的折构函数,在函数体执行结束后按照调用顺序的 相反顺序 逐个执行 2. 即使函数发生 严重错误 也会被执行,类似于 java 中 try{...} ...

  7. python 中__getitem__ 和 __iter__ 的区别

    # -*- coding: utf-8 -*- class Library(object): def __init__(self): self.books = { 'title' : 'a', 'ti ...

  8. (转)Tomcat配置调优与安全总结

    tomcat配置调优与安全总结 作为运维,避免不了与tomcat打交道,然而作者发现网络上关于tomcat配置和调优安全的文章非常散,通过参考各位大神的相关技术文档,根据作者对tomcat的运维经验, ...

  9. Shell记录-Shell命令(定时任务)

    在Linux系统中, at 命令是针对仅运行一次的任务,循环运行的例行性计划任务,linux系统则是由 cron(crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因 ...

  10. iscroll demo

    下面是自己找网上资料写的一个小demo,基础的属性和方法都有用到,但是用法还不是很标准,github上的demo用法很标准,外面一个wrapper,里面还得有一个scroller,如果要做跑马灯效果还 ...