社区讨论
全WA求助
P8471[Aya Round 1 F] 琪露诺的选择题参与者 3已保存回复 4
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 4 条
- 当前快照
- 1 份
- 快照标识符
- @lo8cym3h
- 此快照首次捕获于
- 2023/10/27 16:35 2 年前
- 此快照最后确认于
- 2023/10/27 16:35 2 年前
CPP
#include <cstdio>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <stack>
#include <cstring>
#include <string>
#include <vector>
#define N 100005
#define ls(x) x<<1
#define rs(x) x<<1|1
#define mod 1000000007
using namespace std;
int t,n,a,e,b[205];
char ans[200005];
int main() {
scanf("%d",&t);
while(t--) {
int p;
scanf("%d%d%d",&n,&a,&e);
p=a;
memset(b,0,sizeof(b));
string s;
cin>>s;
for(int i=0; i<s.size(); ++i) {
++b[s[i]];
}
if(b['A']>e) {
a-=b['A']-e;
b['A']=e;
if(a&1) {
puts("-1");
continue;
} else {
for(int i=0; i<2*n; ++i)
ans[i]='B';
int i,j;
for(i=0,j=0; j<b['A']-e&&i<2*n; ++i) {
if(s[i]=='A')
++j,ans[i]='A';
}
if(j!=b['A']-e) {
puts("-1");
continue;
}
}
} else {
a-=e-b['A'];
b['A']=e;
for(int i=0; i<2*n; ++i)
ans[i]='B';
int i,j;
for(i=0,j=0; j<b['A']-e&&i<2*n; ++i) {
if(s[i]=='B')
++j,ans[i]='A';
}
if(j!=b['A']-e) {
puts("-1");
continue;
}
}
int i,j1,j2;
for(i=0,j1=0,j2=0; i<2*n&&(j1<e/2||j2<e/2); ++i) {
if(s[i]=='A'&&j1<e/2) {
++j1;
ans[i]='A';
} else {
if(s[i]=='B'&&j2<e/2) {
++j2;
ans[i]='A';
}
}
}
if(j1!=a/2||j2!=a/2) {
puts("-1");
continue;
}
for(int i=0;i<2*n;++i)
putchar(ans[i]);
putchar('\n');
}
return 0;
}
/*
1000
101
111
10
1 3 3 5
*/
思路是一开始全部变为B把每一次填A转换为+和-错误的个数(一开始为答案中A的出现次数),然后还剩下就两个交替,样例过了,但全wa
回复
共 4 条回复,欢迎继续交流。
正在加载回复...