ACWing 150 括號畫家

2022-07-03 05:09:16 字數 711 閱讀 2692

problem

發現括號序列便想到棧。你一定做過下面這樣的題目:

給乙個長度為\(n\)的括號序列,定義:

這個當然是很好想了。對於每個字串,如果是左括號,就直接進棧,如果是右括號,判斷棧頂的左括號是否與之匹配,不是則不合法。最後判斷棧是否為空。

考慮到原問題,我們發現,對於一端合法的子串行。如果將其單獨用乙個棧來維護,那最後一定是空棧。如果放到主棧中,在從加入這個子串行之前和加完之後是一模一樣的(因為全部彈出了)。所以,在第\(i\)個字元時的當前最長合法序列為\(s[top + 1 \sim i]\),取最大即可。

時間複雜度\(\mathcal(n)\)。

# include using namespace std;

const int n = 100002;

int k = 0;

char s[n];

int ans = 0;

stack q;

int main(void)

' && top == '

else q.push(i);

}else q.push(i);

if(!q.empty())

else

}printf("%d\n",ans);

return 0;

}

acwing 150 括號畫家

用棧儲存左右括號的序號,若左右括號匹配,則出棧。每處理乙個字元就更新一次答案。include include include include include using namespace std intmain s st.top else st.push i 否則將當前字元序號 從0開始 進棧 i...

AcWing 150 括號畫家

達達是一名漫畫家,她有乙個奇特的愛好,就是在紙上畫括號。這一天,剛剛起床的達達畫了一排括號序列,其中包含小括號 中括號 和大括號,總長度為n。這排隨意繪製的括號序列顯得雜亂無章,於是達達定義了什麼樣的括號序列是美觀的 1 空的括號序列是美觀的 2 若括號序列a是美觀的,則括號序列 a a 也是美觀的...

AcWing 150 括號畫家(棧)

這一天,剛剛起床的達達畫了一排括號序列,其中包含小括號 中括號 和大括號,總長度為n。這排隨意繪製的括號序列顯得雜亂無章,於是達達定義了什麼樣的括號序列是美觀的 1 空的括號序列是美觀的 2 若括號序列a是美觀的,則括號序列 a a 也是美觀的 3 若括號序列a b都是美觀的,則括號序列ab也是美觀...