博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【Luogu】P3396哈希冲突(根号算法)
阅读量:4947 次
发布时间:2019-06-11

本文共 1201 字,大约阅读时间需要 4 分钟。

  

  根号算法真的是博大精深啊……明明是暴力但复杂度就是能过

  这也太强了吧!!!

  预处理出p<=sqrt(n)的所有情况,耗时n根n

  查询:

  如果p<=根n,O1查表

  如果p>=根n,因为只有小于根n个数对答案有贡献,所以枚举,耗时根n

  修改:

  因为单点修改,直接修改1~size所有的情况,耗时根n

  然后这个暴力一般的暴力就卡过了!!!!!

  这也  太强  了   吧!!!!

  

#include
#include
#include
#include
#include
#include
#define maxn 160000#define sqtn 400using namespace std;inline long long read(){ long long num=0,f=1; char ch=getchar(); while(!isdigit(ch)){ if(ch=='-') f=-1; ch=getchar(); } while(isdigit(ch)){ num=num*10+ch-'0'; ch=getchar(); } return num*f;}long long s[sqtn][maxn],q[maxn];int sqt;inline void update(int i,int v){ for(int j=1;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=1;i<=n;++i) q[i]=read(); sqt=sqrt(n); for(int i=1;i<=n;++i) for(int j=1;j<=sqt;++j) s[j][i%j]+=q[i]; for(int i=1;i<=m;++i){ char c[10];int x,y; scanf("%s%d%d",c,&x,&y); if(c[0]=='A'){ if(x<=sqt) printf("%lld\n",s[x][y]); else{ long long ans=0; for(int j=y;j<=n;j+=x) ans+=q[j]; printf("%lld\n",ans); } } else update(x,y); } return 0;}

 

转载于:https://www.cnblogs.com/cellular-automaton/p/8320522.html

你可能感兴趣的文章
python学习的第九天文本处理part3、函数part1
查看>>
【开源】OSharp框架解说系列(3):扩展方法
查看>>
IOS制作纯色背景
查看>>
基础(2、Activty\Windows\View关系)
查看>>
Note of introduction of Algorithms (Lecture 1)
查看>>
CentOS 7 安装 建立svn仓库 远程连接
查看>>
Maven 创建动态web 3.0项目
查看>>
CodeforcesD Bubble Sort Graph
查看>>
现代文经典
查看>>
CentOS7 PostgreSQL 主从配置( 二)
查看>>
事务的ACID特性
查看>>
网络拥堵造成数据库性能表现异常的问题排查
查看>>
.NET文档生成工具ADB[更新至2.3]
查看>>
CentOS下编译安装Busybox
查看>>
Python3入门(十三)——连接数据库
查看>>
从程序员到项目经理(五):不是人人都懂的学习要点
查看>>
range用法
查看>>
2.27
查看>>
第6章第2讲循环嵌套结构
查看>>
cordova(phonegap)+qjm 一统天下
查看>>