ZROI 2019 寒假省选线下自闭赛

题目地址:http://www.zhengruioi.com/contest/231

预计得分:$20+10+60=90$

实际得分:$20+10+20=60$

自闭了,,,T3想出K=1的做法然后写炸,还要比暴力低10分

$T1:$

20分直接模拟即可

对于这种题,一般有一个套路就是枚举长度(就是j-i+1),然后去统计答案

考虑优化统计答案的速度(就是不要每次都去找具体的i,j,k,然后再ans++)

假如有一个串:abaada,如果我们已经知道了ab和aa可以拼接,现在我们又知道了aa和da可以拼接

那显然ab,aa,da三个串也可以拼接,于是ans+=2

考虑怎么快速去发现一段字串s[i...j]是否能与s[i+len...j+len]能够拼接(即至多只有一个位置不同)

我们可以O(n)的处理出一个数组S,S[i]表示s[i]是否与s[i+len]不相同

如果某段S[i..j]之和小于等于1的话,就说明这段能够和s[i+len...j+len]相拼接(求个前缀和即可快速知道区间和)

猜你喜欢

转载自www.cnblogs.com/Aegir/p/10362499.html
今日推荐