• CF1209C Paint the Digits


    CF1209C Paint the Digits

    题意:给定T组数据,每组数据第一行输入数字串长度,第二行输入数字串,用数字1和2对数字串进行涂色,被1涂色的数字子串和被2涂色的数字子串拼接成新的数字串,要求新的数字串是非递减的。

    题解:对原数字串进行排序,然后从后往前和从前往后各涂一次,若涂不完则输出“-”。

    #include<iostream>
    #include<string.h>
    #include<string>
    #include<algorithm>
    using namespace std;
    string a,b;
    int vis[200005];
    int main()
    {
        int t;
        cin>>t;
        while(t--)
        {
            int n;
            cin>>n;
            cin>>a;
            b=a;
            memset(vis,0,sizeof(vis));
            sort(b.begin(),b.end());
            int pos1=n-1;
            for(int i=n-1;i>=0;i--)
            {
                if(b[pos1]==a[i])
                {
                    vis[i]=2;
                    pos1--;
                }
            }
            pos1=pos1+1;
            int pos2=0;
            for(int i=0;i<n;i++)
            {
                if(vis[i]==0&&a[i]==b[pos2])
                {
                    vis[i]=1;
                    pos2++;
                }
            }
            if(pos1!=pos2)
                cout<<'-'<<endl;
            else
            {
                for(int i=0;i<n;i++)
                    cout<<vis[i];
                cout<<endl;
            }
        }
    }
  • 相关阅读:
    DOM
    JavaScript 数组的方法总结
    vuex 状态持久化插件 —— vuex-persistedstate
    移动端1px细线
    CSS多行文本并显示省略号
    Java面试题
    Git提交分支
    Redis的安装配置
    Spring IoC
    单例模式
  • 原文地址:https://www.cnblogs.com/-citywall123/p/11587433.html
Copyright © 2020-2023  润新知