CodeForces 797C Minimal string
Posted Fighting Heart
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CodeForces 797C Minimal string相关的知识,希望对你有一定的参考价值。
栈。
先处理一下后缀最小值。
对于每一个字符,如果不是后缀最小值,将栈顶小于当前后缀最小值的都弹出,然后压入当前字符。
如果是后缀最小值,将栈顶小于当前后缀最小值的都弹出,再输出该字符。
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <string> #include <queue> #include <stack> #include <vector> #include <algorithm> using namespace std; char s[100010]; char m[100010]; stack<char>st; int main() { scanf("%s",s); int len = strlen(s); m[len-1] = s[len-1]; for(int i=len-2;i>=0;i--) { m[i] = min(m[i+1],s[i]); } for(int i=0;i<len;i++) { if(s[i] == m[i]) { while((!st.empty())&&(st.top()<=s[i])) { printf("%c",st.top()); st.pop(); } printf("%c",s[i]); } else { while((!st.empty())&&(st.top()<=m[i])) { printf("%c",st.top()); st.pop(); } st.push(s[i]); } } while(!st.empty()) { printf("%c",st.top()); st.pop(); } printf("\n"); return 0; }
以上是关于CodeForces 797C Minimal string的主要内容,如果未能解决你的问题,请参考以下文章
Minimal string CodeForces – 797C
[CF797C] Minimal string - 贪心,栈
Codeforces 797C. Minimal string