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串(字符串前缀和)的主要内容,如果未能解决你的问题,请参考以下文章