51nod 1393 0和1相等串

2021-08-10 09:40:08 字數 721 閱讀 1642

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

input

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

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

1011
output示例 2

準備乙個sum,如果碰到0則-1,碰到1則+1.

對於每乙個sum,記錄最早碰到時的座標。 以後如果在碰到了,那麼這兩個相同的sum之間的值就是符合條件的。這樣可以保證每次查詢都是最大的,因為只和第一次出現的值作比較,最長。

還有一點,如果碰到sum=0了,說明從開始到當前點就是

不過需要注意一點,如果一開始很多0,那麼sum是負的,我們無法儲存,所以我們所有的sum都加10000000. 這樣保證哪怕所有的字元全為0,也可以儲存。

#include

#include

#include

#include

#include

#include

using namespace std;

string s;

int vis[11110000];

int main()

if(s[i]=='1')

if(sum==0)

else

else}}

cout<

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相等串

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

51Nod 1393 0和1相等串

題目 給定乙個0 1串,請找到乙個盡可能長的子串,其中包含的0與1的個數相等。輸入 乙個字串,只包含01,長度不超過1000000。輸出 一行乙個整數,最長的0與1的個數相等的子串的長度。樣例輸入 1011樣例輸出 2分析 使用字首和,字首和pre i val表示01字串前i個字元中,1的數量 0的...