1393 0和1相等串

2022-08-02 23:15:12 字數 1093 閱讀 6078

1393 0和1相等串

基準時間限制:1 秒 空間限制:131072 kb 

給定乙個0-1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。

input

乙個字串,只包含01,長度不超過1000000。
output

一行乙個整數,最長的0與1的個數相等的子串的長度。
input示例

1011
output示例

2

思路:把0變成-1,然後01相等,那個段的和就是0,然後維護字首和,當字首和為0的時候,我們更新最長的,那麼當當前字首不是0的時候,如果我們知道最前面的和

等於當前值的時候(j),那麼[j+1,i]的和就為0,那麼當前值和最大比較更新。複雜n*log(n);

1 #include2 #include3 #include4 #include

5 #include6 #include7 #include

8 #include9 #include

10 #include11

using

namespace

std;

12 typedef long

long

ll;13

int sum[1000005

];14 mapmy;

15char str[1000005

];16

int ans[1000005

];17

int main(void)18

28else ans[i+1] = 1;29

}30 my[0] = 0;int maxx = 0

;31 sum[0] = 0;32

for(i = 1; i <= l; i++)

3339

else

4045

else maxx = max(i-my[sum[i]],maxx);46}

47}48 printf("

%d\n

",maxx);

49return0;

50 }

1393 0和1相等串

給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。收起乙個字串,只包含01,長度不超過1000000。一行乙個整數,最長的0與1的個數相等的子串的長度。10112我發現腦洞一定要大,越大越好,不然有些辦法你想不出來,如果0和1的個數相等,我們要做的事情就是找到最長的區間 i 1...

51Nod 1393 0和1相等串

1393 0和1相等串 基準時間限制 1 秒 空間限制 131072 kb 分值 20 難度 3級演算法題 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。input 乙個字串,只包含01,長度不超過1000000。output 一行乙個整數,最長的0與1的個數相等的子串的長...

51nod 1393 0和1相等串

給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。input 乙個字串,只包含01,長度不超過1000000。output 一行乙個整數,最長的0與1的個數相等的子串的長度。input示例 1011output示例 2 準備乙個sum,如果碰到0則 1,碰到1則 1.對於每乙個...