卡题原因:将自己的思想代入到了题目要求中。

题目要求一次操作可以操作多个数字,但是我认为要最小化数字数量。

实际上,要么是0次操作,要么是1次操作。


 

#include<cstdio>
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;

int main(){
    int t;
    scanf("%d",&t);
    while(t--){
        int n;
        cin>>n;
        char c[n+1]; 
        cin>>c;
        vector<int> v;
        bool flag=0;
        for(int i=0;i<n;i++){
        if(count(c, c+i, '1') == 0) continue;
        if(count(c, c+i, '1') == count(c+i, c+n, '0'))
        {
            cout<<1<<'\n'<<2*count(c, c+i, '1')<<" ";
            for(int j=0;j<i;j++) if(c[j] == '1') cout<<j+1<<" ";
            for(int j=i;j<n;j++) if(c[j] == '0') cout<<j+1<<" ";
            cout<<'\n';
            flag=1;
            break;
        }
        } 
        if(flag)continue;
        cout<<0<<'\n';
    }
    
    return 0;
}