检查了一下我的输出格式应该没有问题,但是WA信息:
Wrong Answer.wrong output format Expected integer, but "Huoyu" found (test case 4)
不知道为啥,求助qwq
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int N=1e6+5;
char a[N];int c[26];
int n,ma;
struct node{
int id;
char c;
bool operator <(const node x)const{
int ca=c-'a',cb=x.c-'a';
return ca<cb;
}
}s[N];
vector<int> ans[N];
void solve1(){
for(int i=1;i<=n;i++)
s[i].id=i,s[i].c=a[i];
sort(s+1,s+n+1);
for(int i=1;i<=n/2;i++){
ans[i].push_back(s[i].id);
ans[i].push_back(s[i+n/2].id);
}
if(n&1)ans[1].push_back(s[n].id);
puts("Huoyu");printf("%d\n",n/2);
for(int i=1;i<=n/2;i++){
printf("%d ",ans[i].size());
sort(ans[i].begin(),ans[i].end());
for(int j=0;j<ans[i].size();j++)
printf("%d ",ans[i][j]);
ans[i].clear();puts("");
}
}
void solve2(){
if(c[ma]==n)puts("Shuiniao");
else if(c[ma]==n-1&&n%2==1&&a[n/2+1]!=char(ma+'a'))puts("Shuiniao");
else if(c[ma]==n-1){
puts("Huoyu");printf("%d\n%d ",n,n);
for(int i=1;i<=n;i++)printf("%d ",i);puts("");
return;
}
else{
char maa=char(ma+'a');
int L=n,R=0;vector<int> q;
for(int i=1;i<=n;i++)
if(a[i]!=maa)L=min(L,i),R=i;
else q.push_back(i);
puts("Huoyu");
printf("%d\n",n-c[ma]);
int now=2;ans[1].push_back(L);
ans[2].push_back(R);
if(L==n-1&&R==n){
ans[1].push_back(n-2);
for(int i=1;i<n-2;i++)
ans[2].push_back(i);
}
else if(L==1&&R==2){
ans[2].push_back(3);
for(int i=4;i<=n;i++)
ans[1].push_back(i);
}
else{
for(int i=0;i<q.size();i++){
if(q[i]<L)ans[2].push_back(q[i]);
else if(q[i]>R)ans[1].push_back(q[i]);
else if(ans[1].size()==1)ans[1].push_back(q[i]);
else ans[2].push_back(q[i]);
}
if(ans[1].size()==1)ans[1].push_back(ans[2].back()),ans[2].pop_back();
if(ans[2].size()==1)ans[2].push_back(ans[1].back()),ans[1].pop_back();
for(int i=1;i<=n;i++){
if(i==L||i==R||a[i]==maa)continue;
int aa=ans[1].back(),bb=ans[2].back();
ans[++now].push_back(i);
if(ans[1].size()>2)ans[now].push_back(aa),ans[1].pop_back();
else ans[now].push_back(bb),ans[2].pop_back();
}
}
for(int i=1;i<=n-c[ma];i++){
printf("%d ",ans[i].size());
sort(ans[i].begin(),ans[i].end());
for(int j=0;j<ans[i].size();j++)
printf("%d ",ans[i][j]);
ans[i].clear();puts("");
}
}
}
int main(){
freopen("input.in","r",stdin);
int T;cin>>T;cin>>T;
while(T--){
scanf("%d",&n);
scanf("%s",a+1);ma=0;
memset(c,0,sizeof(c));
for(int i=1;i<=n;i++){
int cc=int(a[i]-'a');
c[cc]++;
if(c[cc]>c[ma])ma=cc;
}
if(c[ma]<=n/2)solve1();
else solve2();
}
return 0;
}