洛谷 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;
}
【AI方案集】个人记忆库型AI智能体终身伴侣方案.docx 这套AI技术方案不走“先堆概念再硬套场景”的老路,而是以业务痛点为锚点,把机器视觉识别、预测性分析、大模型知识赋能等能力拆解成轻量化可落地的功能模块,直接嵌入生产运营的关键环节,既能快速落地见效,又能通过持续的数据迭代逐步放大价值,帮企业在不盲目新增硬件投入的前提下,稳步完成智能化升级,实实在在把AI变成能降本、提效、控风险的生产工具。 立即下载

相关推荐

【能源系统优化】基于MATLAB的光储充一体化多目标调度:光伏自用率与充电成本权衡及储能联合调控 MATLAB 光储充一体化运行优化|光伏自用率与充电成本权衡

内容概要:本文围绕MATLAB实现的光储充一体化系统运行优化展开,旨在通过建立统一的能量调度模型,量化光伏自用率与充电成本之间的权衡关系,提升设备利用效率与运行安全性,并形成可复现的工程分析能力。项目采用多目标混合整数线性规划方法,综合考虑分时电价、储能损耗、光伏消纳与车辆充电需求,在满足功率平衡、储能状态递推、充放电互斥等约束条件下,实现经济性与环保性的协同优化。通过归一化加权目标函数,支持灵活调整运营策略偏好,并利用MATLAB R2025b完成从数据生成、建模求解到结果可视化的完整流程。配套GUI界面支持参数配置、模型训练、结果预测与运行监控,增强了系统的实用性与交互性。 适合人群:具备一定MATLAB编程基础,从事新能源系统规划、电动汽车充电站运营、微电网控制或综合能源管理的技术人员与研究人员,尤其适合工作年限1-3年、希望深入掌握能源系统优化建模与工程实现的研发人员。 使用场景及目标:①优化城市公共充电站、工业园区、高速服务区等场景的光储充协同运行,降低运营成本并提高光伏利用率;②支持日前调度与滚动优化,实现从静态分析到动态调控的升级;③为储能配置、容量规划、需求响应申报及投资回报评估提供量化决策工具;④通过GUI界面实现数据驱动的模型训练与预测,辅助制定最优充放电策略。 阅读建议:此资源以MATLAB为开发平台,强调从理论建模到工程落地的全过程实践。建议读者结合代码示例与GUI操作,理解数据预处理、多目标优化、混合整数求解与结果评价的关键步骤,并通过修改权重参数、运行场景与设备配置进行灵敏度分析,从而全面掌握光储充系统优化的核心逻辑与应用潜力。

分块

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

Lewis King的博客 940

Qt开发中彻底解决中文乱码问题

中文乱码问题主要源于编码不一致需要同时设置控制台和Qt应用程序的编码确保项目文件和环境配置的编码一致文件操作时注意指定正确的编码。

qq_53832058的博客 3405

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

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

stoorz 425

开源机器学习平台tipdm

TipDM建模平台 tipdm开源的python机器学习建模平台,用户通过拖拉就可以实现模型开发。 项目结构 backend :为java后台服务代码 frontedn :为vue js前端代码 mock-oauth-server:为java认证服务代码 主要分析backend后台服务代码,典型的java spring mvc web项目,项目结构如下: framework-common:公共代码,主要为工具类,spring相关公用类 framework-model: 实体..

wflh323的专栏 4249

如何用Deep OC-SORT提升多目标跟踪精度?实战配置与性能优化指南

本文是一份针对开发者的Deep OC-SORT多目标跟踪实战指南。详细解析了如何通过部署其核心的“动态外观记忆”与“相机防抖”模块来有效应对遮挡与抖动,从而显著提升跟踪精度与连续性。内容涵盖从环境搭建、参数调优到性能压榨的全流程,并提供针对不同场景的配置建议与工程落地技巧。

f9g0h的博客 670

洛谷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

ESP32-CAM搭建Arduino及简单使用

配置环境 方法一 文件 → 首选项 http://wechat.doit.am/package_esp8266com_index.json https://dl.espressif.com/dl/package_esp32_index.json 工具 → 开发板 → 开发板管理器 等待安装 方法二 https://github.com/espressif/arduino-esp32 Arduino安装目录下,找到hardware文件夹 建立文件夹espressif,然后在里面再建立一个esp32文件夹

Ying的博客 2万+

分块算法模板

分块——优雅的暴力

李思成的博客 536

【SAP】ABAP——ALV显示后选择数据操作

在ALV显示后,可全选、全不选或者选择几条数据进行发邮件、更新、下单等等操作。 在user_command中的实现方式如下: 方式一: FORM user_command USING ucomm LIKE sy-ucomm selfield TYPE slis_selfield. DATA: lr_grid TYPE REF TO cl_gui_alv_grid. DATA: lt_rows TYPE lvc_t_row WITH

Mona_1220的博客 4091

基于Qwen3-14B大模型的智能UI自动化测试实践

UI自动化测试是软件工程中保障产品质量的关键环节,其核心原理是通过脚本模拟用户操作,对软件界面进行功能验证。传统方法依赖于编写和维护基于元素定位的固定规则脚本,在面对复杂交互或频繁变化的界面时,维护成本高昂。大语言模型(LLM)的出现为这一领域带来了新的技术价值,其强大的自然语言理解和代码生成能力,使得测试脚本的编写从精确编码转向了任务描述。通过将大模型作为决策大脑,结合Playwright等自动化工具作为执行器,可以构建出能够理解界面、规划操作并验证结果的智能测试系统。这种方案特别适用于处理变化频繁、逻辑

weixin_42619742的博客 304

洛谷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

14、多层螺旋 CT 技术详解

本文详细解析了多层螺旋CT(MSCT)技术的原理与应用,涵盖其相对于单层螺旋CT的优势,包括图像采集速度提升、分辨率提高和噪声降低。文章深入探讨了扫描仪的几何结构、离散投影模型以及关键参数如切片宽度和螺距的影响,并重点介绍了z-滤波重建算法及其离散实现流程。通过流程图和公式推导,系统梳理了从投影获取到图像重建的全过程。同时分析了MSCT在临床中的实际应用案例及未来发展趋势,如更高分辨率、更低辐射剂量和智能化算法等方向,全面展示了MSCT在现代医学影像中的核心价值。

f0g1h2的博客 195

洛谷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

Unity零基础到入门 ☀️| 基础知识入门篇章,看完就可以做游戏啦! | 寻找C站宝藏

Unity入门基础知识。本篇文章介绍了关于Unity入门的一些基础知识,包括基本概念和使用实例。简单易上手,轻松实现Unity入门操作!

努力前行,总会成为自己心中的那道光 1万+

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

qq_42971138的博客 518

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

【洛谷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、付费专栏及课程。

余额充值