首页 > 其他分享 >南外集训 2024.1.15 T3

南外集训 2024.1.15 T3

时间:2024-01-15 17:24:45浏览次数:33  
标签:15 位置 T3 height 南外 数组 sa SA rk

纯粹技术性的题目。

给定一个字符串的后缀数组以及对应的 height 数组的一部分(即一些 height 数组的位置是未知的,用 \(-1\) 表示),要求还原出一种可能的字符串。保证存在一种由 \(26\) 个小写英文字母构成的解。

\(1\le n\le 10^6\)

首先考虑没有 \(-1\) 的情况。注意到此时我们给出了一些位置的相等关系,以及一些等价类的大小关系。注意到大小关系限制只有 \(\Theta(n)\) 个,只要求出等价类以后在 DAG 上 DP 即可。现在的问题是求出字符等价类。根据 SA 数组的定义,可以发现所有字符等价类都是 SA 数组上的连续段(这里 SA 数组上的特定位置对应该位置所代表的后缀的第一个字符)所以我们只关心相邻的两个字符是不是相等,显然相等 \(\iff height_i > 0\)。

现在加入 \(-1\)。如果 \(rk_{sa_{i-1} + 1} < rk_{sa_{i}+1}\),那么 \(s_{sa_{i-1}}\le s_{sa_{i}}\),否则 \(s_{sa_{i-1}} < s_{sa_{i}}\),这里和上面区别不大,但是一个问题是对于一些位置我们不再能通过 \(height_i > 0\) 来判断前后两个字符是不是相等了,所以我们需要用到 \(\forall i, \forall j\in [0, height_i), s_{sa_{i-1}+j} = s_{sa_{i}+j}\)。注意到由于连续段的性质,我们实际上不是合并了 \(sa_{i-1}+j\) 和 \(sa_i+j\),而是把 SA 数组上 \([rk_{sa_{i-1}+j}, rk_{sa_{i}+j})\) 这个区间内所有位置全部和下一个位置合并了。考虑记录一个位置是不是和下一个位置相等,实际上就是这个位置被覆盖次数是不是 \(>0\),所以直接用差分。那么我们要做的是对所有 \(j\in [0, height_i)\), 给 \(d_{rk_{sa_{i-1}+j}}\) 加 \(1\),给 \(d_{rk_{sa_{i}+j}}\) 减一。这个又可以直接重标号一下做离线区间加,直接差分解决。时间复杂度线性。

标签:15,位置,T3,height,南外,数组,sa,SA,rk
From: https://www.cnblogs.com/kyeecccccc/p/17965851

相关文章

  • 2024.1.15-每日进度笔记
    今天,我尝试在java中对昨天的python脚本进行调用,并尝试对输出结果进行格式化。 参考:百度文心一言的回复。 packagetest0113;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;importjava.util.Arrays;publicclasstes......
  • nuxt3:添加谷歌免费字体以及遇到的坑
    前言为了保证项目呈现的一致性,web往往需要添加一个字体文件到项目中。这里推荐直接实现@nuxtjs/google-fonts正文安装配置依赖安装依赖yarnadd-D@nuxtjs/google-fonts配置依赖//nuxt.config.tsexportdefaultdefineNuxtConfig({modules:['@nuxtjs/google-fon......
  • 云原生周刊:OpenTofu 宣布正式发布 | 2023.1.15
    开源项目推荐kubeauditkubeaudit是一个开源项目,旨在帮助用户对其Kubernetes集群进行常见安全控制的审计。该项目提供了工具和检查规则,可以帮助用户发现潜在的安全漏洞和配置问题。ChronosChronos是一款综合性开发人员工具,可监控通过RESTAPI或gRPC通信的容器化(Docker......
  • 世微AP6315 dc-dc 单节充电2A同步锂电充电芯片
    概述是一款面向5V交流适配器的2A锂离子电池充电器。它是采用1.5MHz固定频率的同步降压型转换器,因此具有高达90%以上的充电效率,自身发热量极小。包括完整的充电终止电路、自动再充电和一个达?1%的4.2V预设充电电压,内部集成了防反灌保护、输出短路保护、芯片及电池温度保护等多种功能......
  • 世微AP6315 dc-dc 单节充电2A 锂电IC 同步锂电充电芯片
    概述是一款面向5V交流适配器的2A锂离子电池充电器。它是采用1.5MHz固定频率的同步降压型转换器,因此具有高达90%以上的充电效率,自身发热量极小。包括完整的充电终止电路、自动再充电和一个达?1%的4.2V预设充电电压,内部集成了防反灌保护、输出短路保护、芯片及电池温度保护等多种功......
  • 独立开发者碎碎念 1115
    关于心态❤在巨大焦虑的心态下,人都来不及生病。我记忆中,高考前神经高度紧张,高考后一场大病如期而至。人啊,真复杂。心态啊,真正能做到面对任何事客观平常心的,有几个呢因此尽可能保持客观平常心面对,想到最糟糕的结局和处理方式吧关于目标......
  • nuxt3: 使用 NuxtImg 不生效和请求报500的解决办法
    前言NuxtImg默认使用了IPX作为图形修改器,IPX是NuxtImage的内置和自托管图像优化器。但是我在使用时却报了500的错误,下面分享一下解决问题的过程正文安装配置依赖#安装依赖yarnadd@nuxt/image//nuxt.config.tsexportdefaultdefineNuxtConfig({modules:['@......
  • Nuxt3教程:添加Autoanimate 动画库
    前言AutoAnimate是一个零配置,插入式动画实用程序,可以为您的Web应用程序添加平滑过渡。您可以将其与React,Solid,Vue,Svelte或任何其他JavaScript应用程序一起使用。正文安装依赖#yarnyarnadd@formkit/auto-animate#npmnpminstall@formkit/auto-animate#pnpmpnpmadd......
  • 每日一题 2024-1-15 删除排序链表中的重复元素Ⅱ
    1.题目(中等)原题链接给定一个已排序的链表的头\(head\),删除原始链表中所有重复数字的节点,只留下不同的数字。返回已排序的链表。示例1:输入:head=[1,2,3,3,4,4,5]输出:[1,2,5]示例2:输入:head=[1,1,1,2,3]输出:[2,3]提示:链表中节点数目在范围\([0,300]\)......
  • 海亮01/15数据结构专题
    海亮01/15数据结构专题题单T1P4299首都题意在X星球上有\(n\)个国家,每个国家占据着X星球的一座城市,城市从\(1\)至\(n\)编号。由于国家之间是敌对关系,所以不同国家的两个城市是不会有公路相连的。X星球上战乱频发,如果A国打败了B国,那么B国将永远从这个星球消......