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

根号分治

时间:2023-11-06 13:56:43浏览次数:31  
标签:leq10 复杂度 分治 sqrt 长度 sum 根号

Problem

给定一个长度为 \(S\) 字符串 \(s\) 与 一个正整数 \(q\),接下来有 \(q\) 次询问,第 \(i\) 次询问给出一个长度为 \(T_i\) 字符串 \(t_i\),求 \(t_i\) 在 \(s\) 的出现次数。

保证 \(S,q,\sum^q_{i=1}T_i\leq10^5\)。

Solution

后缀自动机,但是我不会。

注意到 \(\sum^q_{i=1}T_i\leq10^5\),则 \(T_i\) 的种类至多有 \(\sqrt{10^5}\approx 316\) 种,那么就可以对每一种长度相等的 \(t\) 一起处理,可以使用 Hash 在 \(O(n)\) 的时间复杂度进行计算。这样时间复杂度就是 \(O(n\sqrt{n})\) 的。

标签:leq10,复杂度,分治,sqrt,长度,sum,根号
From: https://www.cnblogs.com/osfly/p/17812462.html

相关文章

  • 分治算法(C语言)
    一、棋盘覆盖问题1、问题2、分析(1)当k>0时,将2k×2k棋盘分割为4个(2k-1)×(2k-1)子棋盘,如图(a)所示。每一次分解,都将原本大小的棋盘,划分为四份,即行号和列号各自缩减一半。(2)特殊方格必位于4个较小子棋盘之一中,其余3个子棋盘中无特殊方格。(3)为将无特殊方格子棋盘转化为特......
  • 分治法
    什么是分治法分解-->解决-->合并归并排序#include<stdio.h>#include<math.h>//voidMerge(intA[],intp,intq,intr){ inti,j,k; intL[50],R[50]; intn1=q-p+1,n2=r-q; //为L和R数组赋值 for(i=0;i<n1;i++){ L[i]=A[p+i]......
  • F. Unique Occurrences(线段树分治+可撤销并查集)
    F.UniqueOccurrences假如我们删除所有权值为x的边,那么所有权值为x的边对答案的贡献就是\(\sumsz[u]*sz[v]\)sz表示两个联通块的大小,且(u,v)的边权为x我们可以用可撤销并查集来进行处理,简单来说就是将一条边的存在时间看作区间,然后挂到线段树上,然后遍历到每个叶子的时候进行......
  • 根号分治学习笔记
    根号分治的核心思想是平衡。板子题。很容易想到两种暴力:一是不做预处理,每次询问暴力查询,这样复杂度是\(\mathcalO(q\times\dfrac{n}{p})\)。二是预处理每个池子的值,每次\(\mathcalO(1)\)查询,复杂度为\(\mathcalO(np)\)。观察两个式子,由于\(q,n\)同阶,结合以下两种算法,......
  • 点分治
    第一场\(csp\)后的第一篇博客,我已经\(OIer\)大半年了,再也不是之前那个轻狂的小朋友了。。。所以考虑维护一种算法支持查询树上第\(k\)短的路径是否存在。首先构造两个函数\(\{dfsdist,dfssize\}\),当然其中\(dfssize\)主要是计算重心的。这两个函数相对比较好些,其......
  • 分治法
               ......
  • 棋盘覆盖——分治算法的典例
    问题描述在一个\({2^k}\times{2^k}(K\geqslant0)\)个方格组成的棋盘中,恰有一个方格与其他方格不同,称该方格为特殊方格。棋盘覆盖问题要求用图所示的4种不同形状的\(L\)型骨牌覆盖给定棋盘上除特殊方格以外的所有方格,且任何2个\(L\)型骨牌不得重叠覆盖。问题分析算法设计......
  • 根号分治
    前言因为觉得这个思想很有意思,最近也见到了许多使用根号分治的题目,自己也出了一些用根号分治的题目,所以想总结一下。(下文各种根号分治的名字是我掰出来的,应该有别的称呼)对文章的细节有疑问或是发现错误的欢迎提出。介绍根号分治是一种在对数据规模分类讨论的基础上利用不同算......
  • 【根号分治】P9212 「蓬莱人形」 题解
    P9212看到除法相关容易想到根号分治。先对\(x,y\)进行讨论,不妨令\(0\lex,y<m\)。\(x<y\)时,当满足\(a_i+y<m\)或\(a_i+x\gem\)时,即当\(a_i<m-y\)或\(a_i\gem-x\)满足\((a_i+x)\bmodm<(a_i+y)\bmodm\),即\(a_i\bmodm\in[0,m-y-1]\bigcup[m-x,m......
  • CDQ分治和三维偏序
    专题:CDQ分治本页面将完整介绍CDQ分治。简介CDQ分治是一种思想而不是具体的算法,与动态规划类似。目前这个思想的拓展十分广泛,依原理与写法的不同,大致分为三类:解决和点对有关的问题。1D动态规划的优化与转移。通过CDQ分治,将一些动态问题转化为静态问题。CDQ分治的......