洛谷 P3396 哈希冲突(根号算法 分块)

【模板】树状数组 区间修改,区间求和 (模板题:洛谷P3368树状数组2) 题目描述 如题,已知一个数列,你需要进行下面两种操作: 1.将某区间每一个数数加上x 2.求出某一个数的和 输入输出格式 输入格式: 第一行包含两个整数N、M,分别表示该数列数字的个数和操作的总个数。 第二行包含N个用空格分隔的整数,其中第i个数字表示数列第i项的初始值。 接下来M行每行包含2或4个整数,表示一个操作,具体如下: 操作1: 格式:1 阅读详情

P3396 哈希冲突

题目链接
从这篇博客来做的这道题
在这里插入图片描述
P3396
分析:
看到这个题的数据范围是有点懵,这能怎么做啊?
先看暴力 O ( n 2 ) O(n^2) O(n2) ,

for (int i = x; i <= n; i += p)
	ans += value[i];

如果我们做预处理的话, a n s [ p ] [ x ] ans[p][x] ans[p][x] , % p \%p %p 时余数是 x x x 的位置的和,这样复杂度还是 O ( n 2 ) O(n^2) O(n2),查询 O ( 1 ) O(1) O(1),会爆炸
然后要降复杂度吧,这里就要说到神奇的根号算法了(也不知道是不是叫这个名),分块
预处理 [ 1 , n ] [1,\sqrt n] [1,n ​] 范围的模数 p p p

for (int i = 1; i <= n; i++)
	for (int j = 1; j <= sqrt(n); j++) //枚举模数p
		ans[j][i%j] += value[i];

这样就能得到模数 p ≤ n p\leq\sqrt n p≤n ​ 的所有余数 x x x 的答案了,而且复杂度为 O ( n n ) O(n\sqrt n) O(nn ​),完全可以接受的
若模数 p > n p>\sqrt n p>n ​ ,那么余数为 x x x 的位置不超过 n \sqrt n n ​ 个,同样复杂度小于 O ( n ) O(\sqrt n) O(n ​)
修改时,更新 x x x 位置对 % p \%p %p 的答案,范围也是模数p的范围 [ 1 , n ] [1,\sqrt n] [1,n ​],修改的复杂度 O ( n ) O(\sqrt n) O(n ​)
所以总的复杂度就是 O ( n n ) O(n\sqrt n) O(nn ​)

Code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N = 150005; //sqrt(150000)=387.3
int n, m;
int a[N];
int b[400][400]; //b[p][x] %p意义下余数是x的位置的和
int main()
{
    ios::sync_with_stdio(false), cin.tie(nullptr);
    cin >> n >> m;
    int sq = sqrt(n);
    for (int i = 1; i <= n; i++)
    {
        cin >> a[i];
        for (int j = 1; j <= sq; j++) // %j 意义下余数是 i%j 的数的和, %数大于sqrt(n)直接求就OK
        {
            b[j][i % j] += a[i];
        }
    }
    while (m--)
    {
        string s;
        int x, y;
        cin >> s >> x >> y;
        if (s[0] == 'A')
        {
            if (x <= sq)
            {
                cout << b[x][y] << endl;
            }
            else
            {
                int ans = 0;
                for (int i = y; i <= n; i += x)
                {
                    ans += a[i];
                }
                cout << ans << endl;
            }
        }
        else
        {
            for (int i = 1; i <= sq; i++) // a[x]位置对所有%数更新
            {
                b[i][x % i] += y - a[x];
            }
            a[x] = y;
        }
    }
    return 0;
}
科技中介服务机构想要提升服务效率,需要哪些数智工具支持?.docx 科技中介服务机构想要提升服务效率,需要哪些数智工具支持? 立即下载

相关推荐

usb 扩容盘检测修复工具源码,编译产物

usb 扩容盘检测修复工具源码,编译产物

分块

分块 这是第一篇博客。嘿嘿嘿! 首先来说一下什么是分块:        分块,顾名思义,即将数据切分成块。那么,这有什么意义呢?其实,分块是一种优雅的暴力。 这里给出一道例题:洛谷P2801。        以此题为例:    &...

Lewis King的博客 940

SIwave学习记录:电热耦合仿真

SIwave电热耦合仿真

m0_68174736的博客 2336

【洛谷P4168】蒲公英【分块】

有点毒瘤的数据结构题。orz

stoorz 425

数据助力行业发展:BJTU-RAO转向架数据集介绍

BJTU-RAO转向架数据集是完全公开的,何研究人员皆可以通过后文的下载链接免费下载数据,且在标注数据来源的前提下,研究人员可以自由使用BJTU-RAO转向架数据集。因此,聚焦各类列车转向架传动系统在途安全保障新技术研究和新算法开发,实现牵引电机、驱动齿轮箱和轴箱等关键部件的实时状态监测与智能故障诊断,对保障列车安全可靠运行具有重要的现实意义。BJTU-RAO转向架数据集包含51种健康状态的样本,涵盖正常状态、部件级单一故障、部件级复合故障以及系统级关联复合故障,数据量达116GB。

2401_88870554的博客 3501

为YOLOv11引入自适应特征融合模块(ASFF)

本文探讨了在YOLOv11中引入ASFF(自适应空间特征融合)模块以解决多尺度目标检测性能不均衡的问题。作者分析了传统FPN固定融合策略的缺陷,详细介绍了ASFF模块的实现原理,包括动态权重生成网络设计和特征融合机制。通过将ASFF集成到YOLOv11颈部网络,实现了特征在双向流动时的自适应融合,在复杂场景下mAP提升1.2%而推理时间仅增加3-5ms。文章还分享了训练调参技巧和部署注意事项,指出ASFF特别适合交通监控等目标尺度变化大的场景,但强调需根据实际需求平衡模型复杂度与性能。最后提供了工程实践建议

as1225120794的博客 321

洛谷OJ:P2801 教主的魔法(分块)

思路:虽然n很大,但是查询次数Q有限,只有3000,左右,因此我们可以用分块算法解决该题,通过vector将每一块变成一个有序的块,在每次更新操作,直接暴力更新即可。 #include<set> #include<queue> #include<vector> #include<string> #include<math.h> #include<stdio.h> #include<string.h> #inclu...

信仰.的博客 453

Odoo17商城微信支付模块,快速一个实现可在线支付的商城

通过集成微信支付APIv3,Odoo 系统实现了高效、安全的支付流程。Native扫码支付和Jsapi微信浏览器内直接拉起支付为用户提供了更加便捷的支付方式。同时,通过发送下单及支付消息给管理员,商家可以实时了解订单状态并进行相应处理。通过集成微信支付 结合 Odoo 系统内置的商城模块,可以为商家快速实现功能完善、高效的电商解决方案。

AaronZZH 的博客 2268

分块算法模板

分块——优雅的暴力

李思成的博客 536

【项目实战】YOLOV5 +实时吸烟目标检测+手把手教学+开源全部

本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~ 文章目录本原创项目长期更新,旨在完成校园异常行为实时精检测,做到集成+N次开发+优化(不止局限于调包)为止,近期将不断更新以下模型+数据+标注文件+教程。关注博主,Star 一下github,一起开始美妙的目标检测之路吧~~一、项目展示二、项目资源共享1:训练图片:香烟图片+吸烟手势+烟雾三、

cv君的博客 13万+

使用 Simulink 进行电力电子系统的大信号模型仿真

电力电子系统(Power Electronics System)包括各种功率转换器(如 DC-DC 转换器、逆变器等)。这些设备中的关键组件(如 MOSFET、IGBT、电容器、电感器等)不仅影响系统的性能,还直接关系到系统的稳定性、效率和可靠性。因此,在设计阶段进行详细的建模和仿真至关重要。大信号模型仿真的目的是通过模拟系统在非线性条件下的真实行为,评估其瞬态响应、稳态性能以及对不同负载和输入电压变化的响应。通过本教程,我们介绍了如何使用 Simulink 进行电力电子系统的大信号模型仿真。背景介绍。

xiaoheshang_123的博客 305

洛谷P3396 :哈希冲突(根号算法,分块)

题目描述 众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。 B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。 自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。 B君会给定许多个p和x,询问在模p时,x这个池内数的总和。 另外,B君会随时更改value[k]。每次更改立即生效。 保证 1 &l...

qq_41997978的博客 244

ICME 2026 即插即用 | 特征增强篇 | FSD:多尺度小波分解+频域特征融合,结构细节纹理均增强,性能猛涨!

本文提出了一种基于频域结构解耦和区域感知融合的双路径学习框架(FSD),用于低光图像超分辨率任务。该框架通过多尺度小波变换将输入图像分解为低频亮度结构和高频纹理细节两个正交分量,并采用双路径网络分别处理这两个分量,最后通过跨频段语义重组模块实现特征融合。实验表明,FSD模块在多项指标上显著优于现有方法,能有效提升图像的结构自然度和细节清晰度。该模块适用于对频域/结构/纹理敏感的视觉任务,可直接嵌入网络实现端到端训练。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 140

洛谷3396:哈希冲突——题解

https://www.luogu.org/problemnew/show/P3396 众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。 B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。 自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。 B君会给定许多个p和x,询问在模p时,x这...

weixin_34062329的博客 201

每周技巧tc 问题处理技巧Teamcenter

(内部)Dataset和Tool相关之2.1——Tool轮询Contents Type和Type Name-赖良顺.docx。(内部)Dataset和Tool相关之3.2——编写Batch和Perl为客户端自动注册相关内容-赖良顺.docx。(内部)Dataset和Tool相关之1.1——Tools和Datasets参数定义-赖良顺.docx。(内部)Dataset和Tool相关之1.2——相关首选项定义及修改-赖良顺.docx。(内部)Dataset和Tool相关之0——概述-赖良顺.docx。

TC技术专栏 1230

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

P3396 哈希冲突 (根号算法)

题目链接:https://www.luogu.org/problemnew/show/P3396 题目描述 众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。 B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。 自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。 B君会给定许多...

diaoke6561的专栏 198

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

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

根号分治 前言 本题是一道讲解根号分治思想的论文题(然鹅我并没有找到论文),正 如论文中所说,根号算法——不仅是分块,根号分治利用的思想和分块像 似却又不同,某一篇洛谷日报中说过,分块算法实质上是一种是通过分成 多块后在每块上打标记以实现快速区间修改,区间查询的一种算法。根号 分治与其思路相似,将原本若一次性解决时间复杂度很高的问题分块去解 决来降低整体的时间复杂度。 例题 以本题举例子哈希冲突 本题作为论文的第一道题目,是一道很好的练习题,注意,本体给出的 value[i]value[i]value[i]

qq_42971138的博客 518

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【洛谷P3396】哈希冲突【分块】

根号算法好题。

stoorz 272

【分块】洛谷P3396 哈希冲突

优雅的暴力

Ajwallet 337

【2024.8.1】Traveller解题报告——根号分治

作为一名ACM新人,我最近正在研究根号分治算法。与其说是算法,不如说是一种思想,像dp一样。根号分治的思想就是把数据范围分成大于根号的部分和小于根号的部分,在这两个部分中分别运用不同的算法去解决相应的问题。洛谷 P3396 哈希冲突。

InfCraft的博客 505

浅谈根号分治

## 根号分治 根号分治是一种优美的暴力。 顾名思义,根号分治就是对于一个长度为$N$的数列,将查询和修改分为$\leq N$和$>N$的两个部分来处理。将两个部分分别处理并拼在一起,来优化时间复杂度。

tanjunming2020的博客 837

洛谷P3396 哈希冲突 - 根号复杂度算法

我一开始打了个暴力,直接n^2枚举。。。看哪个同余x,但是有个办法能更快一点,复杂度取决于模数p。可以发现其实不用一个个去检验哪个同余x,因为是从1开始到n找出所有同余x的正整数,由题意x一定小于等于p,所以所有和x模p同余的整数就是x+k*p 从另一个角度来说,做题的时候一定要从原本描述中抽象出核心含义,这道题问x池内的综合,就是问所有模p同余的下标对应的数之和(抽象出题意有助于帮助我们想起以...

Zolrk的博客 492

洛谷3396 哈希冲突 【分块】

题目 众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。 B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。 自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。 B君会给定许多个p和x,询问在模p时,x这个池内数的总和。 另外,B君会随时更改value[k]。每次更改立即生效。 保证1&...

weixin_30883777的博客 65

不平均的分治——根号分治

上面说过,预处理的部分是空间且时间都能接受的部分,那么我们自然是能预处理多少就尽量预处理,均摊后面。这时候可以考虑一种两者兼备的思路:用数组存空间时间都能接受的部分,剩下的部分暴力。次操作,对序列某个元素或者某种意义上的区间进行查询(比如:余数为。用数组存无论的空间还是时间也显然无法操作。的模数,对应的下标更分散,暴力的时间复杂度在可接受范围内。就显得有些不尊重这个数据了,我们最大可以预处理。对于这种操作,直接暴力的复杂度是。接下来用一道板子题来详细讲。以上的模数都不用数组存?

STY_fish_2012的博客 788

哈希冲突 洛谷3396 根号算法

题目 众所周知,模数的hash会产生冲突。例如,如果模的数p=7,那么4和11便冲突了。 B君对hash冲突很感兴趣。他会给出一个正整数序列value[]。 自然,B君会把这些数据存进hash池。第value[k]会被存进(k%p)这个池。这样就能造成很多冲突。 B君会给定许多个p和x,询问在模p时,x这个池内数的总和。 另外,B君会随时更改value[k]。每次更改立即生效。 保证1

A_loud_name 556
上一篇: POJ 1151 Atlantis(扫描线)
下一篇: 华华和月月逛公园(Tarjan求割边)
LZH0217
博客等级 码龄8年 36粉丝 206原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值