首页 > 其他分享 >HDU - 4821 String

HDU - 4821 String

时间:2024-11-12 10:20:31浏览次数:1  
标签:HDU le String 相同 4821 字符串

给定字符串 \(S\)。求有多少长 \(M \times L\) 的子串,使得将其划分成 \(M\) 个长度为 \(L\) 的字符串 \(S_1,S_2,\dots S_M\) 互不相同。

\(1 \le M \times L \le |S| \le 10^5\)。

从 \(0\) 起下标。

显然这些字符串的起始位置在模 \(L\) 意义下相同。不妨枚举这个值 \(r \in [0, L)\)。

依旧是说这些字符串的起始位置必须是 \(r + kL\),且 \(k\) 连续。

不妨求出 \(h_k = \operatorname{Hash}(S[r+kL,r+(k+1)L-1])\)。于是问题变成了,求 \(h\) 中有多少长 \(M\) 的区间,满足元素互不相同。

直接用个桶扫一遍就做完了呀。

但是我计 \(p_i\) 表示 \(i\) 之前最后一个和 \(h_i\) 相同的位置。然后 \([l,l+M-1]\) 合法等价于 \(p\) 的区间最大值 \(< l\)。于是单调队列维护区间最小值。

标签:HDU,le,String,相同,4821,字符串
From: https://www.cnblogs.com/2huk/p/18541267

相关文章

  • JAVA重写(override)toString方法
    1.toString()方法一般出现在System.out.println(类名.toString());toString()是一种自我描述方法本身返回的是getClass().getName()+“@”+Integer.toHexString(hashCode());也就是类名+@+hashCode的值重写toString()只会对类生效,并不能字符串生效; 2.为什么要重......
  • HDU 6964 I love counting
    看到\(\oplus\),肯定想到trie。当我们一位可以是\(1\)但是变成\(0\)时,一个子树内的都合法。特殊的,最后走到的叶子也合法。想法负一:我会莫队!时间复杂度\(\mathcal{O}(n\sqrt{n}\logn)\),待更新。想法零:我会树套树!待更新。想法一:我会HH的项链!我们按照\(r\)离线,每一次查......
  • 深入计算机语言之C++:STL之string的认识与使用
    ......
  • String、StringBuffer、StringBuilder的区别
    在Java中,​​String​​​、​​StringBuffer​​​、和​​StringBuilder​​都是用于处理字符串的类,但它们之间存在一些关键差异,主要涉及可变性、线程安全性和性能: 1.String:-不可变性:​​String​​对象一旦被创建,其内容就不能改变。任何对​​String​​的操作,比如拼接......
  • String、StringBuffer、StringBuilder的区别
    在Java中,​​String​​​、​​StringBuffer​​​、和​​StringBuilder​​都是用于处理字符串的类,但它们之间存在一些关键差异,主要涉及可变性、线程安全性和性能: 1.String:-不可变性:​​String​​对象一旦被创建,其内容就不能改变。任何对​​String​​的操作,比如拼接......
  • JAVA中StringBuilder介绍与实现
    StringBuilder是Java中的一个类,它在java.lang包下。StringBuilder用于创建可变的字符序列,即可以在不生成大量临时对象的情况下修改字符串。StringBuilder是线程不安全的,因此它的操作速度比StringBuffer快,但在多线程环境下需要额外的同步措施。StringBuilder提供......
  • 并查集 How many tables(hdu 1213) How many answers are wrong(hdu 3038)
    目录前言并查集  并查集的初始化  并查集的合并  并查集合并的优化,路径压缩Howmanytables(hdu1213)  问题描述  输入  输出问题分析代码带权并查集Howmanyanswersarewrong(hdu3038)  问题描述  输入  输出问题分析代码......
  • MissingServletRequestParameterException(Required String parameter ‘code‘ is not
    文章目录1、控制台2、ExceptionHandle3、anti-counterfeiting.js4、AntiFakeController5、解决方案方案一:修改前端请求格式方案二:拼接URL参数(适用于`GET`请求或带参数的`POST`请求)方案三:后端改用`@RequestBody`总结1、控制台2024-11-0614:45:40.557ERROR......
  • C++中string字符串的基础操作,学习
    string字符串常用函数substring()string.length()&&string.size()string.find()string.replace()string.substr()string初始化和声明#include<bits/stdc++.h>usingnamespacestd; intmain(){stringstr1;//空字符串stringstr2="hello,w......
  • 哈希算法(开散列)- 支持string(this指针指向的理解)
    一.开散列的定义闭散列(开放地址法)的缺点是线性探测和二次探测都会存在哈希冲突的问题,数据越多冲突就会越明显,导致查询数据的时间复杂度大幅度提升个人思路:创建一个指针数组,当某个位置要插入一个数据,就再创建一个数组,指针数组对应位置的指针指向此数组的首元素(数组地址),......