题意
给你一个串儿只由0,1,2组成,其中可以翻转01,10,12和21,不能翻转02和20,
问你如何翻转让新的到的串儿字典序最小。
思路
写的时候就一直卡在b题了,导致这场CF直接凉凉。。。赛后补题的时候觉得C,D都是绝世傻逼题啊,,早知道就先写C,D了,讲一下思路把,对于1来说,他可以和2换也可以和0换,那么也就是说,我们的所有的1都是可以翻到前面来的,而我们的0在没有碰到2之前也是可以翻到前面来的,但是遇到2之后就不可以了,因为无论如何我们的0都翻不过2,所以思路就有了,我们把2之前的所有的0都翻到前面来,把所有的1都翻到前面来,之后2之后的0和2顺序都不改变就好了上代码:
#include <bits/stdc++.h>
using namespace std;
string sh;
int main()
{
cin>>sh;
int len = sh.size();
string ans;
int flag = 0;
int a = 0 , b = 0;
for(int i = 0 ; i < len ; i ++)
{
if(!flag && sh[i] == '0') a++;
if(flag && sh[i] == '0') ans+='0';
if(sh[i] == '1') b++;
if(sh[i] == '2') flag = 1,ans +='2';
}
while(a--) cout<<"0";
while(b--) cout<<"1";
cout<<ans<<endl;
}