首页 > 其他分享 >Erase First or Second Letter

Erase First or Second Letter

时间:2024-02-24 13:55:47浏览次数:31  
标签:位置 字符串 Second Erase Letter 序列 操作 我们 个字符

先来看一下官方解答

首先对任意一个操作序列,如果存在某次操作二排在相邻的操作一前面,那我们把这两次操作换成连续的两次操作一,得到的字符串显然不变

所以我们可以先一直进行操作一,然后在进行操作二,我们把一种操作序列记为\((i,j)\),表示进行了\(i\)次操作一之后进行了\(j\)次操作二

我们接下来考虑什么时候两个字符串是一模一样的

所以显然有\(i_1+j_1=i_2+j_2\),因为要删掉同样多的字符;还有\(s_{i_1+1}=s_{i_2+1}\)

而在满足上面两个条件之后,我们惊奇地发现,这居然也是充分的(也就是此时字符串一定相同了)

所以我们有了下面这么一个算法:我们找出\(26\)个字符每一个字符第一次出现的位置(因为某个位置如果不是第一次出现的位置,那么从这个位置开始的任何一种操作序列,都可以转化成第一次出现的位置开始的某种操作序列),表示\(i\)的大小,而后面\(j\)无论为多少,显然最后得到的序列都不同

这题目的官解也提示我们,遇到这种操作序列的题目(放在比较前面的),可以考虑不同操作序列的等效性

然后说一下我的做法

我们观察一下样例,第一步操作无论是操作一还是操作二,会得到长度为\(n-1\)的字符串,而后面的\(n-2\)个字符一定是不变的;用数学归纳法可以得出,当我们删除\(i\)个字符后,无论我们的操作序列是什么,我们得到的最终长度为\(n-i\)的字符串,后面\(n-i-1\)个字符一定是相等的,所以我们只用考虑前面\(i+1\)个字符保留哪一个就好了

标签:位置,字符串,Second,Erase,Letter,序列,操作,我们,个字符
From: https://www.cnblogs.com/dingxingdi/p/18030999

相关文章

  • 体光伏效应和二次谐波产生的微观理论(Photogalvanic effect 、bulk photovoltaic effec
    此领域较易入门,经典文献为:1.综述:https://www.nature.com/articles/s41563-021-00992-72.Sipe大佬的论文:开创领域的两篇最经典论文,值得全部重复:https://journals.aps.org/prb/abstract/10.1103/PhysRevB.61.5337https://journals.aps.org/prb/abstract/10.1103/PhysRevB.52.146......
  • 无涯教程-setUTCSeconds()函数
    JavascriptdatesetUTCSeconds()方法用于根据世界时(UTC)设置指定时间的秒字段。setUTCSeconds()-语法Date.setUTCSeconds(secondsValue[,msValue])secondsValue  - 0到59之间的整数,代表秒。msValue      - 一个介于0和999之间的数字,代表......
  • 无涯教程-getSeconds()函数
    JavaScriptdategetSeconds()方法根据本地时间返回指定日期中的秒数。getSeconds返回的值是0到59之间的整数。getSeconds()-语法Date.getSeconds()getSeconds()-返回值根据当地时间返回指定日期中的秒数。getSeconds()-示例vardt=newDate("December25,1995......
  • P3002 [USACO10DEC] Threatening Letter G
    https://www.luogu.com.cn/problem/P3002首先考虑一个显然的dp,设\(f_i\)表示最后一刀切在\(i\)上,并将\(1\simi\)全部剪出的最小刀数。转移显然是\(f_i=\min_{0\lej<i,t_{j+1\simi}\ins}f_j+1\),其中\(t_{j+1\simi}\)表示字符串\(t\)的子串\([j+1,i]\),\(t\ins\)......
  • pytorch反向传播错误解决:RuntimeError: Trying to backward through the graph a seco
    pytorch反向传播错误解决:错误:RuntimeError:Tryingtobackwardthroughthegraphasecondtime,butthebuffershavealreadybeenfreed.Specifyretain_graph=Truewhencallingbackwardthefirsttime.归因排查:出现这种错误有可能是反向传播过程中出现了二次传播,......
  • 【C++】STL 容器 - list 双向链表容器 ③ ( list 常用 api 简介 | 中间位置 插入 / 删
    文章目录一、list双向链表容器的中间位置插入元素1、在指定位置插入1个元素-insert函数2、在指定位置插入n个相同元素-insert函数3、中间位置插入另一个容器的指定范围内的元素-insert函数二、list双向链表容器的中间位置删除元素1、删除容器中所有元素......
  • script, first, second, third = argv
    fromsysimportargv#从Python的特性库中引入argv特性到自己的脚本中#readtheWYSSsectionforhowtorunthisscript,first,second,third=argv#解包argv,并依次赋值给左边的变量print("Thescriptiscalled:",scr......
  • About this book (Entity Framework in Action,Second edtion)
    EntityFrameworkinAction,第二版,是关于快速、正确地编写EFCore数据库代码,并最终实现优异的性能。为了帮助解决“简单、正确、快速”方面,我提供了许多示例以及大量的提示和技巧。在此过程中,我介绍了EFCore的内部工作原理,因为当事情没有按照你认为的方式工作时,这些信息将会......
  • 242-InetAddress.getLocalHost().getHostName() took 20021 milliseconds to respond
    一台windows服务器,要部署jar,启动成功,却无法正常请求。会报错:InetAddress.getLocalHost().getHostName()took20021millisecondstorespond.Pleaseverifyyournetworkconfiguration.经查,该服务器启动了一个其他服务,该服务占用了所有的网络请求带宽,导致网络不通。找到服......
  • D - Erase Leaves
    D-EraseLeaveshttps://atcoder.jp/contests/abc333/tasks/abc333_d 思路把这个图看成一棵树,1作为树根,统计1树根关联的子节点作为根的子树的总节点数,去除子树中总节点数最大子的子树,其它子树的总节点记做贡献,最后+1(对应1节点)。 同时注意一个特殊情况,1仅有一......