首页 > 其他分享 >$\text{20240301}$ 字符串练习题解

$\text{20240301}$ 字符串练习题解

时间:2024-03-01 16:02:34浏览次数:37  
标签:练习题 le 20240301 text 字符串 长度

\(\text{20240301}\) 字符串练习题解

一定要写冬令营的题吗?遗憾的。

P9717

给了一个 \(n\) 个数的首尾相接的字符串,求若干个操作后能形成的不同的字符串大小。

  • 一次操作定义为:将字符串内所有的 \(\text{01}\) 同时改成 \(\text{10}\),如图。

4d59940dff194ba4e8b242b03b004d3e.png

通过这张图我们似乎发现了一个规律,这里的 \(\text{1}\) 似乎在旋转?于是我们得出:

  • 定义 \(x\) 串为长度大于等于 \(1\) 的全为 \(x\) 的串
  • 对于一个 \(\text{0}\) 串,如果其左边不和某个 \(\text{1}\) 串相邻,变换后会整体往左移动一位;对于 \(\text{1}\) 串恰恰相反;
  • 如果一个 \(\text{0}\) 串接在一个 \(\text{1}\) 串后面,那么相当于两个串相撞,变换后长度都会减 \(1\)。
  • 当不存在串时,就会绕圈。在此之前每一个字符串都是不相同的

这样可以将它分为两部分。找到一个起点位置,使得每个前缀中 \(\text{1}\) 串长度和不小于 \(\text{0}\) 串长度和,如何求出请右转这里,那么就可以求出每个 \(\text{0}\) 连续串会在什么时侯寄掉,并求出所有 \(\text{0}\) 连续段消失后的序列。

最后求一次结尾串的最小周期长度,这样可以算出剩余的次数。

Gym104901H

令 \(suf_{s, i}\) 表示 s 从第 i 个字符开始的后缀。令 \(g_i = lcp_{s,suf_{s, i}}\)。
对每个下标,求如果必须改掉第 \(i\) 个字符,\(\sum g_j\) 的值最大是多少。

考虑修改第 \(i\) 个字符会对如何。

  • \(1 \le i \le g_j\) 或 \(j \le i < j + g_j\),则它会变成 \(i\)。
  • 否则,恰好是其中一个字符串末尾才有影响
    • 比如 \(i = g_j + 1\),那么只能变成 \(s_{i+g_i}\) 才能让值增加。新 g 值的计算可以用哈希 & 二分等方式实现。
    • 在后面同理。

汝可画图知之。

因此维护每个位置变成每个字符对答案产生的贡献(离线维护区间加等差数列),最后离线把答案算出来即可。注意由于字符集很大,只记录对答案有影响的字符。

\(O(n \log n)\)。

代码写不出不放了。

标签:练习题,le,20240301,text,字符串,长度
From: https://www.cnblogs.com/lc0802/p/18047278

相关文章

  • servlet.service() for servlet [dispatcherservlet] in context with path []
    Sevlet.service()forservlet[dispatcherServlef]incontextwithpath[|threwexception[Requestprocessingfailed;nestedexceptioniorg.springframework.web.client.ResourceAccessException:/0erroronGETrequestfor"htt.:llocalhost8081.user1":......
  • textarea的奇怪行为
    1、input、textarea自动回填默认值。注:可通过属性autocomplete="off"来取消这个行为。这个行为浏览器并没有暴漏出回调,所以,无法知道这个行为的发生时机。通过自测,发现window.onload事件里也取不到这个值(这个时候还没有回填),但是下一个宏任务可以取到这个值。因此,如果想要拿这......
  • DbContext配置解析
    publicclassIdDbContext:IdentityDbContext<User,Role,long>{publicIdDbContext(DbContextOptions<IdDbContext>options):base(options){}protectedoverridevoidOnModelCreating(ModelBuildermodelBuilder){......
  • Java 使用 itext 向PDF插入数据和图片
    Java使用itext向PDF插入数据和图片一、下载AdobeAcrobatDC二、制作模板1、准备一个word模板,并转换成PDF格式2、使用AdobeAcrobatDC打开PDF文档,并在右侧搜索框搜索表单,点击准备表单 3、点击开始,制作PDF表单 4、扫描完成后如下图,蓝白色框就是可编辑表单......
  • Go - context keys and values
    ISTHEREAWAYTOLISTKEYSINCONTEXT.CONTEXT?Nothereisnowaytolistallthekeysof context.Context.Becausethattypeisjustaninterface.Sowhatdoesthismean?Ingeneralavariablescanholdaconcretetypeoraninterface.Avariablewithan......
  • UOJ228/HDU5828 基础数据结构练习题/Rikka with Sequence 题解(势能线段树)
    势能线段树。如果线段树上一个节点的\(\max-\min\ge2\),我们称其为关键节点,考虑定义势能\(\phi\)为线段树上关键节点的个数。对于每次开方操作,如果当前节点为关键节点,则暴力递归左右儿子修改,否则:如果当前节点\(\max=\min\)或\(\max=\min+1\)且\(\max\)不是完全平方数,......
  • Unity编辑器扩展秘籍-利用EditorApplication.contextualPropertyMenu为右键菜单增加自
    假设我们希望为材质右键弹出按钮增加新的功能,应该怎么做呢我们可以通过注册EditorApplication.contextualPropertyMenu全局回调方法,增加自定义的MenuItemusingUnityEditor;usingUnityEngine;namespaceYaojz{[InitializeOnLoad]publicstaticclassMaterialC......
  • Go - context
     funcmain(){ctx,cancel:=context.WithTimeout(context.Background(),5*time.Second)defercancel()gof1(ctx)fori:=0;i<10;i++{select{case<-ctx.Done():fmt.Println("timedout"......
  • Go 100 mistakes - #61: Propagating an inappropriate context
       疑问:前两种情况(1.客户端连接中断2.HTTP请求取消)发生,publish却不expire也不会被cancel,这样会不会有问题? ......
  • Go - Contexts
           ......