首页 > 其他分享 >浅谈根号分治

浅谈根号分治

时间:2023-08-10 13:34:31浏览次数:36  
标签:frac 浅谈 询问 分治 sqrt 方法 复杂度 根号

浅谈根号分治

一、问题引入

  给定一个长度为\(n\)的序列,进行\(m\)次询问。每次询问给出两个数字\(x,y\)。对于每次询问,输出所有下标模除\(x\)等于\(y\)的元素的总和。
  对于这个问题,我们发现他要维护的是一段离散的元素的和,而我们平时学的数据结构,如线段树等都只能维护一段连续的区间的和,那这个问题要如何进行处理呢?
仔细观察这个问题,我们可以发现这样两种方法:

  • 我们可以用一个数组 \(sum[x][y]\) 来预处理出所有的下标模除\(x\)等于\(y\)的元素的和,然后进行\(O(1)\)的查询。但这个方法存在的问题为,只能处理x较小的情况。当x过大时,时间开销和空间开销都会变得很大
  • 我们可以直接暴力求解查询,对询问x y,写一个从y开始到n结束的循环,每次增长的步长为x。这个方法存在的问题为,只能处理x较大的情况。当x过小时,单次询问的复杂度会趋近于\(O(n)\)

我们刚刚提到了两种方法,一种只能处理x较小的情况,而另一种只能处理x较大的情况。那么我们是否可以综合这两种方法。当x较小时使用第一种方法,而当x较大时使用第二种方法呢?答案是显然的,这就是我们今天要讲的内容——根号分治

首先我们考虑以k作为分界点,当x小于k时使用第一种方法进行预处理。当x大于k时使用第二种方法进行暴力查询。首先来分析复杂度
如果我们要预处理所有小于k的情况,那么预处理的复杂度即为\(O(nk)\),单次询问的复杂度为\(O(1)\),所以第一种方法的复杂度即为\(O(nk)\)。
下面考虑第二种方法的复杂度,由于循环的步长为x,所以单次查询的复杂度即为\(O(\frac{n}{k})\),最多可以进行m次询问,所以总的复杂度最坏为\(O(\frac{nm}{k})\),在这个问题中\(n,m\)同阶,所以上述复杂度还可以写成\(O(\frac{n^2}{k})\)
由于我们要综合使用两种方法,所以总的复杂度便是\(max(nk,\frac{n^2}{k})\)。注意到当\(k = \sqrt n\)时该式有最小值 \(n \sqrt n\)所以如果我们将\(k = \sqrt n\)作为第一种方法和第二种方法的分界点。最后的复杂度便是\(O(n \sqrt n)\)

标签:frac,浅谈,询问,分治,sqrt,方法,复杂度,根号
From: https://www.cnblogs.com/AH20/p/17620096.html

相关文章

  • 浅谈弧光保护在中低压开关柜中的应用
    未晓妃安科瑞电气股份有限公司上海嘉定201801摘要:近年来,中低压开关柜的使用越来越普遍。在此过程中,确保开关柜平稳运行至关重要。并在此基础上,阐述了由此产生的弧光和电弧事故的危险性,引入弧光保护及母线保护的特点必要性分析,阐述了弧光保护系统的原理和结构。工程实例证明,弧光保......
  • 【学习笔记】线段树分治
    定义线段树分治是一种解决一类有插入、删除和整体查询操作的问题的方法。它是一种离线做法,通过在线段树上记录操作的时间区间来处理修改对询问的影响。每个操作被看作一个时间区间的修改,并在线段树上进行标记。然后通过深度优先搜索(DFS)依次执行这些操作,直到根节点来回答查询,并在......
  • CGAL入门——浅谈CGAL
    CGAL官网https://doc.cgal.org/latest/Manual/index.html最近在学习CGAL,发现CGAL中文资料太少了,官网示例代码也很少注释,还加入了很多自定义的很少见过的名词,易读性略差,学习起来有点难度赶紧记录一下学习过程,怕以后忘了 1.简介CGAL(ComputationalGeometryAlgorithmsLibrar......
  • 浅谈项目架构设计
    整理自b站up主主要一点是最合适的是最好的,不必为了过于追求某项技术而冗余!一.功能性需求1.跟实际的业务需求是对应的!2.所使用的技术框架是不是够先进,文档是否完善,使用过程中容易排查到问题3.技术是否为开源的,够不够活跃,更新频率等4.成本:学习成本,使用成本,迁移成本,维护成本,要......
  • 浅谈AI浪潮下的视频大数据发展趋势与应用
    视频大数据的发展趋势是多样化和个性化的。随着科技的不断进步,人们对于视频内容的需求也在不断变化。从传统的电视节目到现在的短视频、直播、VR等多种形式,视频内容已经不再是单一的娱乐方式,更是涉及到教育、医疗、商业等各个领域。为了满足用户个性化的需求,视频大数据的分析和挖掘......
  • 根号分治-2023牛客7 E-Star Wars
      也就是说对于大点和小点我们采用不同的方式维护对于大点来说我们只需要记录它的周围点的总和不需要知道具体的谁链接了它 对于小点我们需要维护它的所有信息他自己链接了哪些点 需要再开一个vector表示自己链接的大点这样大对大或者小对大的时候维护的信息也......
  • 浅谈 2-SAT
    SAT是适定性(Satisfiability)问题的简称。一般形式为k-适定性问题,简称k-SAT。而当\(k>2\)时该问题为NP完全的。所以我们只研究\(k=2\)的情况。而2-SAT问题一般指的是,有\(n\)个布尔变量\(x_1,x_2\dotsx_n\),现在有若干个二元的运算,是对于\(x_i,\negx_i,x_j\neg......
  • 【230807-1】在三角形ABC中,内角A,B,C所对的边分别是a,b,c,若a^2=3b^2+3c^2-2bcSinA*根
    ......
  • 【230807-2】三角形ABC的内角A,B,C所对的边分别是a,b,c, aSinA+cSinC-根号2*aSinC=bSi
    ......
  • 浅谈PLC程序命名3大通用规则
    导读工程师在编写PLC程序时,可能需要对项目中的程序块、变量表、单一背景数据块、全局DB块等命名。在博途软件中支持中文和英文的命名。但是一旦程序量比较大,命名可能就会出现混乱的现象。针对命名,只要读者遵循相关命名规则就不易发生混乱。本文以博途软件为例进行探讨。01......