题解 CF1189A 【Keanu Reeves】

· · 题解

CF1189(Div.2)题解(全)

A. Keanu Reeves

题意:定义0的个数与1的个数不同的01串为"好串".
给你一个长为n(1≤n≤100)的串s,把它分成尽量少的"好串".输出最少分成的段数和这些段.

题解:考虑原串s:

时间空间显然O(n)(但我在比赛时却瞎搞了个O(n^2),太low就只贴O(n)代码了)

//Wan Hong 2.2
//notebook
#include<iostream>
#include<cstdio>
#include<cstring>
typedef long long ll;
char a[5011];
int main()
{
    ll n,c0=0,c1=0;
    std::cin>>n>>(a+1);
    for(ll i=strlen(a+1);i;--i)
        if(a[i]=='1')++c1;
        else ++c0;
    if(c1!=c0)std::cout<<1<<std::endl<<(a+1);
    else std::cout<<2<<std::endl<<a[1]<<" "<<(a+2);
    return 0;
}