「星雲系統」 單調棧

2022-05-03 10:39:17 字數 478 閱讀 7296

傳送門

現在給定你乙個字串 s 以及乙個整數 k,請求出 s 的字典序最小的長度為 k 的子串行。

利用單調棧維護乙個棧

如果棧頂元素字典序大於當前字元的字典序,而且剩下的字元足夠使得棧裡的元素長度為k個,那麼就把棧頂元素pop掉,而加入當前字元。

同理可以維護最大的那個字典序

#include #include #include #include using namespace std;

const int n = 5e6 + 5;

int top;

char a[n], stk[n];

int main()

for(int i = 1; i <= k; i++) // 輸出前面k個棧元素

printf("%c", stk[i]);

putchar('\n');

return 0;

}

2019 計蒜之道 複賽 D 「星雲系統」

現在給定你乙個字串s以及乙個整數k,請求出s的字典序最小的長度為k的子串行。題目鏈結 第一行乙個由小寫英文本母構成的字串s,第二行乙個正整數k。一行乙個字串ans,表示答案。0helloworld 5ellld 設串長為n,則只需刪掉n k個字元。用乙個單調棧維護,依次將字串的每個字元插入,如果當前...

2019 計蒜之道 複賽 D 「星雲系統」

全世界的中心傳輸節點和各地的網路節點組成的這個 星雲系統 何其複雜。我們現在只考慮一條支線上的網路節點,每乙個網路節點比作乙個字元的話,這條支線就是乙個字串。現在給定你乙個字串 ss 以及乙個整數 kk,請求出 ss 的字典序最小的長度為 kk 的子串行。第一行乙個由小寫英文本母構成的字串 ss,第...

單調棧 模板 單調棧模板

biu 單調棧主要用於求取左邊第乙個比它大,或者比它小的數。就比如站隊隨便排成一列,可以求到每個人後面第乙個比他高的人。同理可以推廣至右邊,比它矮均可。這就是單調遞增棧 遞減棧,從前至 棧,從後向前入棧的區別了。單調棧比較抽象,非常具有智慧型的想法,可應用的場景相當少,根據幾個經典題目體會它的用法會...