北京郵電大學2023年機試題 最長平衡串

2021-10-06 12:46:42 字數 940 閱讀 3212

給定只含01的字串,找出最長平衡子串的長度(平衡串:包含0和1的個數相同),串長最大10^6

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

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

2018北郵的壓軸題,想了蠻久的,個人認為主要的點在於,我們可以將0換成-1,然後求字首和陣列dp,這樣當dp[

i]==

dp[j

]dp[i]==dp[j]

dp[i]=

=dp[

j]的時候,dp[

i+1]

−dp[

j]

dp[i+1]-dp[j]

dp[i+1

]−dp

[j]這個區域內肯定是乙個平衡子串,那麼問題就變成了求dp[

i]==

dp[j

]dp[i]==dp[j]

dp[i]=

=dp[

j]時j −i

j-ij−

i的最大值。我們只需要用乙個map,記錄所有dp[

k]

dp[k]

dp[k

]首次出現的位置,再找到乙個dp[

i]==

dp[k

]∣

i>

kdp[i]==dp[k]|i>k

dp[i]=

=dp[

k]∣i

>

k時,二者維護的最長平衡字串長度為i−k

i-ki−

k。

int

main()

int res =0;

for(

int i =

1; i < s.

size()

; i++

) cout << res << endl;

}}

2023年北京郵電大學機試題目

趁著現在還記得趕快寫下來,個人回憶版 計算機學院機試題目 第一題 題目描述 輸入32位的二進位制01串,輸出這個數 1和 3後的32位二進位制串 輸入描述 先輸入t,表示輸入的組數 然後輸入t行二進位制串 輸出描述 輸出 1和 3後的二進位制串 輸入樣例 2000000000000000000000...

矩陣冪 北京郵電大學複試機試題

給定乙個n n的矩陣,求該矩陣的k次冪,即p k。第一行 兩個整數n 2 n 10 k 1 k 5 兩個數字之間用乙個空格隔開,含義如上所示。接下來有n行,每行n個正整數,其中,第i行第j個整數表示矩陣中第i行第j列的矩陣元素pij且 0 pij 10 另外,資料保證最後結果不會超過10 8。對於每...

北京郵電大學18年網研真題

problemb v字型數列,當且僅當三元組ia j 並且a k a j 算作乙個v型數列。輸入第一行為測試資料組數t 每組資料第一行為該陣列的數字個數 接下來一行為陣列元素 輸出 輸出對應陣列中符合v字形數列的個數 測試資料 2 1 2 2 1 2 1 2 輸出 include include i...