当前位置: 首页 > news >正文

根号

一. 根号分治

精髓就是拼接两个暴力

1. 余数根号分治:Remainder Problem

首先直接单点更新O(1),查询暴力跳O(n)。这个暴力的有点在于当查询的x比较大的时候,那么跳的次数就比较少。
另一种暴力思路就是维护c[i][j]为%i = j的下标的数的和,那么更新就是O(n)的,查询则变成O(1)的了。
我们考虑分治 设阈值为B。
当x<=B时用暴力2 O(B) O(1)
x > B时用暴力1 O(1) O(n/B)
B = sqrt(n)时 B = n / B

if(op == 1)
{rep(i, 1, B) c[i][x % i] += y;a[x] += y;
}
else
{if(x <= B) cout << c[x][y] << '\n';else{int res = 0;for(int i = y; i <= 500000; i += x) res += a[i];cout << res << '\n';}
}

小变化

给定一个长度为 ( n ) 的序列 ( x )(元素编号从 ( 1 ) 开始),所有元素初始值为 ( 0 )。接下来进行 ( q ) 次操作,每次操作分为以下两种类型(操作含参数 ( a, b )):

设有长度为 n 的序列 \(x = (x_1, x_2, \dots, x_n)\),初始时满足全0

接下来进行 q 次操作,每次操作分为以下两类之一:

  1. 更新操作:给定 a, b,对所有满足 \(a \cdot i \le n\) 的正整数 \(i\),执行
    \(x_{a \cdot i} \leftarrow x_{a \cdot i} + b\).

  2. 查询操作:给定 \(a, b \; (a \le b)\),输出
    \(\sum_{i=a}^{b} x_i\).
    暴力1,直接跳着修改然后BIT查询,复杂度\(O(log(n) \times \sqrt{n})\)
    暴力2,对于每个修改直接记录tag[a]加了多少,查询时在区间内查看a的倍数有几个在区间内即为贡献 \(O(B)\)
    然后就可以对于a<=B用2,a>B用

http://www.rkmt.cn/news/12499.html

相关文章:

  • 如何在 CentOS 7 上安装 bzip2-libs-1.0.6-13.el7.x86_64.rpm 文件
  • WSL2 磁盘清理
  • 完整教程:1.DHCP服务器
  • 关于OneBot的QQ机器人探索2
  • putty
  • 深入解析:PHP 8.0+ 高级特性深度探索:架构设计与性能优化
  • 完整教程:神经网络torch学习路线规划
  • redis实现分布式锁2
  • 题解:P7334 [JRKSJ R1] 吊打
  • 实用指南:【C++实战㊷】C++ 原型模式实战:从概念到高效应用
  • 警惕新型XCSSET macOS恶意软件变种,专攻Xcode开发者
  • 前端面经-高级开发(华为od) - 实践
  • 垃圾收集器与核心算法详解(上)
  • 【Linux】网络基础 - 实践
  • C# 序列化三种方式
  • VMware+RockyLinux+ikuai+docker+cri-docker+k8s 自用 实践笔记(一) - 详解
  • 记录安装机器/深度学习环境(conda、CUDA、pytorch)时的一些问题
  • 详细介绍:大数据毕业设计选题推荐:基于Hadoop+Spark的全球能源消耗数据分析与可视化系统
  • 深入解析:自动化接口框架搭建分享-pytest
  • 实战需求分析
  • 完整教程:实战:基于 BRPC+Etcd 打造轻量级 RPC 服务——高级特性与生产环境深度实践
  • 【RabbitMQ】主题(Topics)与主题交换机(Topic Exchange)
  • Ubuntu上编译 Linux_RT 内核
  • 解决字符串数组中大整数精度问题
  • playwright-mcp入门
  • 国信DRS数据恢复中心成为东芝(TOSHIBA)存储硬盘的数据恢复合作服务商
  • 深入解析Windows注册表regf文件格式
  • IMU-坐标系-位姿
  • 在 Nginx Docker 官方镜像中编译并加入第三方模块 - 教程
  • 计算机毕业设计springboot考研资讯管理系统 基于Spring Boot的考研信息管理平台设计与达成 Spring Boot驱动下的研究生入学考试资讯管理系统开发