51nod——1391 01串(字符串前缀和)

Posted noobimp

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51nod——1391 01串(字符串前缀和)相关的知识,希望对你有一定的参考价值。

好像这题是4级题下放2级?

预处理:求每个位置 x 左区间 [ 0 , x ] 中 1 比 0 多的数量和右区间 ( x , n - 1 ] 中 0 比 1 多的数量(少就是负的)。相当于求两个前缀和。这样在判断 1 多还是 0 多时判断前缀和与零的大小关系就行了。

更新答案:对于字符串中的每个位置 x 的左侧,要求前缀和小于零。如果小于零,符合要求,长度即下标加一。如果大于零(设为 k ),要从头开始,找到第一个位置,这个位置的左侧 1 也比 0 多 k 个,这样把这个位置之前的串剪掉,就剩下符合要求的最长串了。对右侧同理。每次枚举位置 x ,更新最大的 l + r 。

O(3*n)46ms

参考:https://blog.csdn.net/C_13579/article/details/81449648

以上是关于51nod——1391 01串(字符串前缀和)的主要内容,如果未能解决你的问题,请参考以下文章

AC日记——还是01串 51nod 1396

51nod 1393 0和1相等串 思路 : map存前缀和

51nod 1565模糊搜索(FFT)

1393 0和1相等串 51nod

51nod 1129 字符串最大值

51Nod - 1304 :字符串的相似度 (裸的扩展KMP)