【Luogu】P3396哈希冲突(根号算法)
根号算法真的是博大精深啊……明明是暴力但复杂度就是能过
这也太强了吧!!!
预处理出p<=sqrt(n)的所有情况,耗时n根n
查询:
如果p<=根n,O1查表
如果p>=根n,因为只有小于根n个数对答案有贡献,所以枚举,耗时根n
修改:
因为单点修改,直接修改1~size所有的情况,耗时根n
然后这个暴力一般的暴力就卡过了!!!!!
这也 太强 了 吧!!!!
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cctype>
#include<cmath>
#define maxn 160000
#define sqtn 400
using namespace std; inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} long long s[sqtn][maxn],q[maxn];
int sqt;
inline void update(int i,int v){
for(int j=;j<=sqt;++j) s[j][i%j]=s[j][i%j]-q[i]+v;
q[i]=v;
} int main(){
int n=read(),m=read();
for(int i=;i<=n;++i) q[i]=read();
sqt=sqrt(n);
for(int i=;i<=n;++i)
for(int j=;j<=sqt;++j) s[j][i%j]+=q[i];
for(int i=;i<=m;++i){
char c[];int x,y;
scanf("%s%d%d",c,&x,&y);
if(c[]=='A'){
if(x<=sqt) printf("%lld\n",s[x][y]);
else{
long long ans=;
for(int j=y;j<=n;j+=x) ans+=q[j];
printf("%lld\n",ans);
}
}
else update(x,y);
}
return ;
}
【Luogu】P3396哈希冲突(根号算法)的更多相关文章
- luogu P3396 哈希冲突(分块?)
我们可以维护一个\(f[i][j]\)代表%\(i\)意义下得\(j\)的答案.然后维护就炸了. 先设\(x=\sqrt{n}\)然后我们发现,当\(i>x\)时我们直接暴力复杂度为\(O(x) ...
- 洛谷P3396 哈希冲突 (分块)
洛谷P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣. ...
- 洛谷 P3396 哈希冲突 解题报告
P3396 哈希冲突 题目背景 此题约为NOIP提高组Day2T2难度. 题目描述 众所周知,模数的hash会产生冲突.例如,如果模的数p=7,那么4和11便冲突了. B君对hash冲突很感兴趣.他会 ...
- P3396 哈希冲突(思维+方块)
题目 P3396 哈希冲突 做法 预处理模数\([1,\sqrt{n}]\)的内存池,\(O(n\sqrt{n})\) 查询模数在范围里则直接输出,否则模拟\(O(m\sqrt{n})\) 修改则遍历 ...
- P3396 哈希冲突
很好的根号算法(这种思想好像叫根号分治?) 首先,暴力是Ο(n2)的 考虑预处理: for(p=1;p<=n;p++) //枚举模数 ans[p][i%p]+=value[i]; 看似很好但还是 ...
- P 3396 哈希冲突 根号分治
Link 据说这是一道论文题????.具体论文好像是 集训队论文<根号算法--不只是分块> 根号分治的裸题. 首先我们考虑暴力怎么打. 先预处理出每个模数的答案,之后再 O(1) 的回答, ...
- luogu 3396 哈希冲突 奇怪的根号
这个题嘛开始一看实在想不出来有什么数据结构/算法可以乱搞,于是果断写了个朴素n方暴力,然后就发现luogu竟然有91分 这数据啊,也是醉了.. 想着优化优化能不能暴力卡过最后一个T掉的点,然鹅发现无耶 ...
- 洛谷P3396 哈希冲突
分块还真是应用广泛啊...... 题意:求 解:以n0.5为界. 当p小于n0.5的时候,直接用p²大小的数组储存答案. 预处理n1.5,修改n0.5. 当p大于n0.5的时候,直接按照定义计算,复杂 ...
- p3396 哈希冲突(暴力)
想了好久,没想到优秀的解法,结果是个暴力大吃一静.jpg 分类讨论,预处理\(p\le \sqrt{n}\) 的情况,其他直接暴力,复杂度\(O(n \sqrt{n} )\) #include < ...
随机推荐
- Android(java)学习笔记124:利用Service在后台播放背景音乐
1. 在android应用程序里,有一种没有UI的类(android.app.Service)——Service.简单来说,Service是一个 background process(背景程序),通过 ...
- falling object思路总结
1.用检测的方法把falling object标记为一个类别,然后检测出类别.这种方式不可行的原因:因为falling object可能是任何东西,所以可能是一个路锥,也可能是一个玻璃瓶,还可能是掉下 ...
- bootstrap 翻页的状态
翻页的状态 下面的实例演示了上表中所讨论的 class .disabled 的用法: <!DOCTYPE html><html><head><meta htt ...
- cocos2dx lua 打印和保存日志
在2d游戏中,经常会出现闪退或者报错的问题,通过写文本,将日志文件发送给服务端,让后端人员进行分析. 通过lua打印日志在文本文件中: local file = io.open(cc.FileUtil ...
- Angular-网页定时刷新
类上方引入“OnInit”.“OnDestroy” import { OnInit, OnDestroy } from '@angular/core'; 类实现“OnInit”.“OnDestroy” ...
- 洛谷 P1835 素数密度
https://www.luogu.org/problemnew/show/P1835 对于40%,对每个数进行最大$O(\sqrt n)$的判断,因为n比较大所以超时. 想到线性筛,然而我们并不能筛 ...
- Leetcode 20 有效的括号valid-parentheses(栈)
给定一个只包括 '(',')','{','}','[',']' 的字符串,判断字符串是否有效. 有效字符串需满足: 左括号必须用相同类型的右括号闭合. 左括号必须以正确的顺序闭合. 注意空字符串可被认 ...
- 在Linux系统中重现黑客帝国经典画面
我们需要一个叫cmatrix的小程序,下面写出步骤 1 :依赖环境 yum -y install gcc ncurses-devel 2 :下载程序 wget https://files.cnbl ...
- Voyager的路由
修改默认的后台登录路由 打开web.php,把prefix值改为你想设置的值,如back: Route::group(['prefix' => 'back'], function () { Vo ...
- spring boot yaml 自定义配置 映射到 java POJO
只需要一个注解就ok: @ConfigurationProperties("user.other") “user.other” 这个值匹配的是user下的other对象 yaml ...