C. Qingshan Loves Strings 2

原题链接

题解

1.当10个数不一致时,无论怎样都不成立
2.当01个数一致时,是否一定存在某种方法使得成立呢?
3.对于长度为 k 的字符串 s,若不合法,那我在旁边添加一个01,则我们可以连续删除两边的配对数字,且至少能删除一对,且经过若干轮的删除一定能使字符串长度减小

总的来说,我们把插入若干个01串使得对称的过程,看成插入若干个01串,使得两端对称的部分消除

code

#include<bits/stdc++.h>
using namespace std;

int main()
{
    int t;
    cin>>t;

    while(t--)
    {
        int n;
        cin>>n;

        string s;
        cin>>s;

        deque<int> q,id;
        int cnt=0;
        for(int i=0;s[i];i++)
        {
            q.push_back(s[i]-'0');
            cnt+=q.back();
            id.push_back(i);
        }
        id.push_back(n);
        if(cnt*2!=n)
        {
            puts("-1");
            continue;
        }

        queue<int> ans;
        int l=0,r=n;//代表当前插入的位置

        while(q.size()>1)
        {
            if(q.front()==q.back())
            {
                if(q.back()==0)
                {
                    q.pop_front();
                    l++;
                    ans.push(r);

                    q.push_back(0);
                    r++;
                }
                else
                {
                    q.pop_back();
                    r++;
                    ans.push(l);

                    q.push_front(1);
                    l++;
                }
            }
            else
            {
                q.pop_back();
                q.pop_front();
                l++;
                r--;
            }
        }

        cout<<ans.size()<<endl;
        while(ans.size())
        {
            cout<<ans.front()<<" ";
            ans.pop();
        }

        puts("");
    }
    return 0;
}


posted @   纯粹的  阅读(7)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示