D. Equal Binary Subsequences
一道比较妙的构造题
我们只需要成对进行考虑即可,每一个成对的01和10反着操作即可
void solve(){
int cnt1=0;
cin>>n;
cin >> p;
p=" "+p;
n*=2;
vector<pii> vec;
for(int i=1;i<=n;i+=2){
if(p[i]!=p[i+1]){
if(p[i]=='1') vec.push_back({i,i+1});
else vec.push_back({i+1,i});
}
}
if(vec.size()&1) {
print(-1);
return ;
}
printf("%d ",vec.size());
for(int i=0;i<vec.size();++i){
if(i%2==0){
printf("%d ",vec[i].x);
}
else{
printf("%d ",vec[i].y );
}
}printf("\n");
for(int i=1;i<=n;++i){
if(i&1) printf("%d ",i);
}printf("\n");
}
版权声明:本文为m0_51780913原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。