P9482 [NOI2023] 字符串 题解
\(36pts\)
\(O(tqn^2)\)暴力即可
\(40pts\)
对于最朴素的暴力优化,从头到尾扫,如果已经当前位字符比出优先级,那么直接能判断了,没必要往后跑了,第15个性质B的也给跑过了,我没料到,不过数据强一点其实和20pts没区别
\(性质A(60pts)\)
没有想出来
\(性质B(72pts)\)
写这个性质只有12pts,但是对于思考正解有很大帮助
给定st和r,题目让我们求 \(s[st,st+l-1]\) 字典序小于 \(R(s[st+l,st+2l-1])\) 且 1<=l<=r 的个数,先把反串接在后面,用特殊符号连接。既然这个东东很像回文,那我们就把他搞成成前缀或后缀表示,采用放缩法,于是上面的东东相当于是: \(s[st,n]<=s[1,st+2l-1]\) ,跟上面的东东没两样,然后就是st开始的后缀小于st+2l-1结尾的前缀,感觉是SA+ds状物(SAM维护不了rank)。按照这样子搞显然会出现重复,不过写B性质绰绰有余,正解感觉就是搞个容斥减掉贡献了
令\(n=|S+char+revS|\)
那么 \(yn=|S| ,有n=2yn+1\)
所以需要求 pos属于 \([n+2-st-2r,n-st]\) 且满足 pos和st奇偶性相同,rank[st]<rank[p]的个数
就变成了经典模型二维数点,但是需要分奇偶去搞,分奇偶去搞的原因如下:
\(A=S[st,st+l-1],B=S[st+l,st+2l-1]\)
我们尝试将 \(l\) 增加一位,比较的两个子串变成了 \(A'=S[st,st+l],B'=S[st+l+1,st+2l+1]\)
我们发现 \(B'\) 的右端点较 \(B\) 的右端点增加了 \(2\).
可以发现,在固定 \(l\) 的前提下,\(B\) 的右端点奇偶性是固定的, 所以我们需要将询问按 \(l\) 的奇偶性分别建立树状数组.
正解
在B性质基础上,考虑容斥,非法情况就是 \(S[st,st+2l-1]\) 构成回文串,并且 \(rank[st]<rank[st+2l-1]\) ,那就要减掉1种情况
现在想怎么搞出回文串,显然是要找偶回文,因为你没有理由中间有个字符(但是我们可以假设回文中心是 \(i+\frac{1}{2}\) )然后对于所有以某个位置为回文中心的所有偶回文串,针对 \(s[i...]和revs[..j]\) 要么全产生贡献,要么全都不产生贡献,所以就不需要用PAM和Manacher了,然后我们求回文串是什么,显然转化成了SA的经典问题,求任意两个后缀的lcp,不过要注意两个串是同一个(不过本质上是一样的),然后对于每一个 \(i\),扫过去的时候就又是个二维数点了
P9482 [NOI2023] 字符串 题解的更多相关文章
- 最长重复字符串题解 golang
最长重复字符串题解 package main import ( "fmt" "strings" ) type Index map[int]int type Co ...
- [SCOI2010]生成字符串 题解(卡特兰数的扩展)
[SCOI2010]生成字符串 Description lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还要求在组成的字符串中,在任意的前k个字符中,1的个数 ...
- BZOJ4259:残缺的字符串——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=4259 很久很久以前,在你刚刚学习字符串匹配的时候,有两个仅包含小写字母的字符串A和B,其中A串长度 ...
- BZOJ1856:[SCOI2010]字符串——题解
https://www.lydsy.com/JudgeOnline/problem.php?id=1856 lxhgww最近接到了一个生成字符串的任务,任务需要他把n个1和m个0组成字符串,但是任务还 ...
- LintCode-282 · 解压字符串-题解
题目链接:https://www.lintcode.com/problem/282/description?_from=collection&fromId=208描述:小Q想要给他的朋友发送一 ...
- cojs 疯狂的字符串 题解报告
首先这道题是GT考试的加强版本QAQ 当n<k的时候,答案显然是10^n 当n=k的时候,答案显然是10^n-1 这样就有20分辣 之后我们考虑k<=20的做法 显然设f(i,j)表示前i ...
- Codeforces Round #309 (Div. 2) A. Kyoya and Photobooks 字符串水题
A. Kyoya and Photobooks Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://codeforces.com/contest/5 ...
- LeetCode一句话题解
深度优先搜索 人生经验 1. 需要输出所有解.并由于元素集有重复元素,要求返回的结果需要去重的情况,可考虑使用值对应数量的map,然后分别考虑依次取不同数量该值的可能. LeetCode39 题目:给 ...
- Codeforces Round #466 (Div. 2) 题解940A 940B 940C 940D 940E 940F
Codeforces Round #466 (Div. 2) 题解 A.Points on the line 题目大意: 给你一个数列,定义数列的权值为最大值减去最小值,问最少删除几个数,使得数列的权 ...
- NOIP模拟测试25「字符串·乌鸦喝水·所陀门王的宝藏(陀螺王)」
字符串 题解 没看出catalan怎么办 dp打表啊! 考虑大力dp拿到30分好成绩!顺便收获一张表 打表发现$C_{n+m}^{m}-C_{n+m}^{m-1}$ 仔细观察然后发现其实就是之前的网格 ...
随机推荐
- Hexo博客Next主题bilibili视频Markdown插入文章
问题及需求 B站视频无广告有弹幕,非常简洁,经常看B站视频,在文章引用B站的视频 在不用插件的情况下用官方的iframe方式引入视频,默认的方式导入视频屏幕会很小 一般我们都是自己改width和hei ...
- react项目中使用plop
第一步,安装依赖 npm install plop --dev //或者用yarn yarn add plop --dev 第二步,在package同级目录下新建plopfile.js 这是plop的 ...
- jdbc-plus是一款基于JdbcTemplate增强工具包,基于JdbcTemplate已实现分页、多租户、动态表名等插件,可与mybatis、mybatis-plus等混合使用
jdbc-plus简介 jdbc-plus是一款基于JdbcTemplate增强工具包,基于JdbcTemplate已实现分页.多租户.动态表名等插件,可与mybatis.mybatis-plus等混 ...
- 文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题
文心一言 VS 讯飞星火 VS chatgpt (64)-- 算法导论6.5 3题 三.要求用最小堆实现最小优先队列,请写出 HEAP-MINIMUM.HEAP-EXTRACT-MIN.HEAP DE ...
- Nextcloud允许不被信任的域访问 取消 trusted domains
在服务器部署了Nextcloud,由于测试需要,经常从不同的地址访问,但是每次访问都要把域名添加到受信任域,反反复复修改也挺麻烦,暂时又没找到通配符或者禁用的方法. 不过网上提供了一个替代方法,动态生 ...
- 使用 virt-install 命令创建虚拟机
实践 参考文档:官方手册 这个命令适用于创建第一个虚拟机,后面如果再增加,修改xml文件或者使用clone命令就可以了. centos.sh #!/bin/bash name='centos7' is ...
- HTML的总结与回顾(思维导图
- [db2]数据备份与还原
前言 备份还原db2数据库一般有两种方式,一种是使用db2 backup + db2 restore,另一种是db2move + db2look.前者备份的数据库文件不能使用后者的方式进行还原. 实例 ...
- 从浅入深了解.NET Core MVC 2.x全面教程【第二章】
二.Logging 1.诊断中间件 命名空间:Microsoft.AspNetCore.Diagnostics 报告信息并处理异常 2.诊断中间件 UseDeveloperExceptionPage: ...
- golang1.21新特性速览
经过了半年左右的开发,golang 1.21 在今天早上正式发布了. 这个版本中有不少重要的新特性和变更,尤其是在泛型相关的代码上. 因为有不少大变动,所以建议等第一个patch版本也就是1.21.1 ...