zoukankan      html  css  js  c++  java
  • 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;
            }
        }
    }
  • 相关阅读:
    Codeforces 960B(优先队列)
    “景驰科技杯”2018年华南理工大学程序设计竞赛 H-对称与反对称(逆元)
    AcWing
    POJ
    POJ
    AtCoder
    HRBUST
    CodeForces
    HYSBZ
    HDU
  • 原文地址:https://www.cnblogs.com/-citywall123/p/11587433.html
Copyright © 2011-2022 走看看